libsicksaxis - connect sixaxis/DS3 to the Wii

Discussion in 'Wii - Hardware, Devices and Utilities' started by xerpi, Dec 14, 2012.

Dec 14, 2012
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    Hi guys, these days I've been writing a library called "sicksaxis" (yeah sick xD) for the Wii.
    It's very simple, it allows you to connect your sixaxis and dualshock 3 via USB to the Wii and read its data.

    Lib SickSaxis allows:
    • Read the buttons
    • Read the analog sticks
    • Read the motion sensors (accelerometer and gyro)
    • Read the button pressure
    • Rumble
    • Turn on/off the LEDs
    • Set the controller's MAC
    • Get the controller's MAC
    Version 2:
    • Rewritten from scratch
    • Should be more stable
    Version 1.0 improvements:
    • Reorganizated the code
    • Improved some functions
    • Changed synchronous USB functions to asyncrhonous (this means it won't lag anymore)
    Download version 2.0
    GitHub: https://github.com/xerpi/libsicksaxis


    A video:




    Old versions:
    This is not yet a library, it's just a homebrew, I mean the library source is compiled with the main.c
    Last edited by xerpi, Jan 14, 2014
    RiCK420 and filfat like this.


    • Member

    boomario Nothing to say here.

    Member Since:
    Oct 31, 2012
    Message Count:
    282
    Country:
    Brazil
    Awesome work :lol:
    please continue with this wonderful work and maybe in future we will be able to play some games with dualshock 3 wihout any problems.
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    Thanks :P
    Well, currently it's only a library, it can be useful for current homebrew (and maybe new), I mean, if you grab some emulator's code for example, you can implement this library very easily.
    The hard this would be to write a IOS driver to support sixaxis/dualshock3 natively.
    And even a harder think would be to do the same via bluetooth.

    If you find an interesting open source Wii project, tell me and I'll try to implement libsicksaxis :)
    • Member

    Oxybelis New Member

    Member Since:
    Jan 10, 2010
    Message Count:
    307
    Country:
    Antarctica
    Maxternal and Felipe_9595 like this.
    • Member

    WoJjTeK New Member

    Member Since:
    Jun 27, 2012
    Message Count:
    115
    Country:
    Poland
    Awesome work , do you think it'd be possible to implement this library into Dios Mios ? I'd be a great solution for new Wii's without GC controller support.
    RiCK420 and Felipe_9595 like this.
    • Member

    BlackWizzard17 Don't worry Captin we'll buff out those scratches.

    Member Since:
    Dec 1, 2012
    Message Count:
    851
    Location:
    E-Arth
    Country:
    United States
    so cool hopefully I can play ps1 emulator with it for MK trilogy :lol:
    • Member

    LightyKD KING of Nintendo!!!

    Member Since:
    Jun 25, 2008
    Message Count:
    3,192
    Location:
    Angel Grove, CA
    Country:
    United States
    Great work! Id love to see a 360 controller version of this!
    • Global Moderator

    Cyan GBATemp's lurking knight

    Member Since:
    Oct 27, 2002
    Message Count:
    10,595
    Location:
    Engine room, learning
    Country:
    France
    WiiSX? Playstation emulator with a Playstation controller.


    @users: it needs to be included into the homebrew sources/devkit, not into IOS/MIOS.
    • Member

    SifJar Not a pirate

    Member Since:
    Apr 4, 2009
    Message Count:
    6,022
    Country:
    United Kingdom
    People talking about IOS/MIOS are meaning they want it to work in official software.
    • Newcomer

    phrozenfeonix New Member

    Member Since:
    Oct 28, 2008
    Message Count:
    46
    Country:
    United States
    You wouldn't be able to implement this into dios mios, for sure. Apparently there is already so much space restriction involved with the code, that the devs can't even fit in an ntfs support module.
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    New version 1.0, see the top of the page!
    BlackWizzard17 and Maxternal like this.
    • Member

    BlackWizzard17 Don't worry Captin we'll buff out those scratches.

    Member Since:
    Dec 1, 2012
    Message Count:
    851
    Location:
    E-Arth
    Country:
    United States
    So how would we use this, and by the way nice work.
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    We can implement it on homebrews (on emulators it would be nice :P). And thanks.
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain
    I have updated it a little, now the library is actually a library, not a homebrew. Typing make install will do the trick.
    filfat likes this.
    • Member

    filfat Your one and only Stewie Griffin

    Member Since:
    Nov 24, 2012
    Message Count:
    594
    Location:
    Mellerud
    Country:
    Sweden
    The 360 controller isencrypted so it req a driver. That makes it 1000x harder to make.
  1. BlackWizzard17
    This message by BlackWizzard17 has been removed from public view by Cyan, Aug 31, 2013, Reason: don't do that. Thanks.
    Aug 31, 2013
    • Member

    daxtsu /dev/null

    Member Since:
    Jun 9, 2007
    Message Count:
    1,230
    Country:
    United States
    Hi, do you have any idea why the sample stops updating the controller info after about 5 seconds? I compiled it with the latest commit from https://github.com/xerpi/libsicksaxis, connected a genuine Sony DS3 via a USB cable, and saw it started printing button info and such to the screen, but after about 5 seconds, it just completely stops. I do have a USB hard drive connected to the Wii while trying this; is there a problem with this library and USB hard drives?

    I modified the sample like so, to remove the "opening" part (I wanted it to always print the info, as pressing 1 or 2 freezes the homebrew :unsure: ):
    Code:
    int main(int argc, char **argv)
    {
        srand(time(NULL));
        IOS_ReloadIOS(58);
        usleep(100 * 100000);
        USB_Initialize();
        init_video();
        WPAD_Init();
           
        ss_init();
        struct ss_device dev, dev2;
        ss_initialize(&dev);
       
     
        while(run) {
            WPAD_ScanPads();
            u32 pressed = WPAD_ButtonsDown(0);
            printf("\x1b[2;1H  \n");
            printf("Press 1 or 2 to open the controllers:  %d\n", lol);
            USB_DeviceChangeNotifyAsync(USB_CLASS_HID, change_cb, (void*)&lol);
           
            if (!ss_is_connected(&dev)) {
                    if (ss_open(&dev)>0) {
                        ss_start_reading(&dev);
                        ss_set_removal_cb(&dev, removal_callback, (void*)1);
                    }
            } else {
                print_ss_data(&dev);
            }
     
            if (pressed & WPAD_BUTTON_HOME) run = 0;
            VIDEO_WaitVSync();
            VIDEO_ClearFrameBuffer (rmode, xfb, COLOR_BLACK);
        }
        ss_close(&dev);
        ss_close(&dev2);
        USB_Deinitialize();
        exit(0);
        return 0;
    }
    Edit: I found the problem myself. USB_DeviceChangeNotifyAsync(USB_CLASS_HID, change_cb, (void*)&lol); shouldn't be called on every loop iteration. It causes the Wii to freeze. If it's async, it doesn't need to be called every frame.
    Last edited by daxtsu, Jun 5, 2014
    • Newcomer

    xerpi New Member

    Member Since:
    Dec 25, 2011
    Message Count:
    38
    Location:
    Barcelona
    Country:
    Spain


    Thanks for noticing that USB_DeviceChangeNotifyAsync bug! I'll take a deeper look once I've ended my finals.
    • Member

    daxtsu /dev/null

    Member Since:
    Jun 9, 2007
    Message Count:
    1,230
    Country:
    United States
    No problem. Out of curiosity, does libsicksaxis support connecting DS3 controllers wirelessly? I saw some code to get and set the mac address, but when I tried to use either one, it seemed to crash (I'm sure I was doing it wrong somehow..).
    • Member

    AbdallahTerro da KiNG

    Member Since:
    Jan 14, 2012
    Message Count:
    3,867
    Location:
    Ideas factory :)
    Country:
    Lebanon
    Yo!
    first thanks for this awesome library
    second is there a way on earth to make it work in USB Loaders when a cIOS is used (force cIOS option "on" that is)

SPONSORED LINKS
 

Share This Page