Page 1 of 6

xbox classic support

Posted: Wed Jan 11, 2017 12:28 pm
by neomatrix888
dear GIMX team.
i am happy user of ps3 and xbox360
but sometimes i like to play on my classic xbox
i have luck to buy fanatec speedster 3 (best wheel to this console) cheap on german ebay, ( i bought 5 :-) but currently its almost impossible
to buy xbox version of that wheel. its easy to buy ps2 version.
Classic xbox had 4 joypad ports (compatible with USB 1.1) on ebay you can buy cheap xbox joypad-usb adapter
i've got new and sealed fanatec speedster 3 which i want to send you ( together with SUPER JOY BOX 9 = xbox controller adapter for windows )
if you only want to write gimx software to emulate xbox wheel signal to let me think - logitech driving force gt (ps2, ps3 and pc wheel very popular not like fanatec.)
please write me an anserw and if yes write me where i should send it.
if you write gimx to emulate classic xbox wheel signal to more popular wheels you will make big favor to classic xbox fans which have not so much
luck like me.
sorry i know my english is terrible.
thanks and god bless you

Re: xbox classic support

Posted: Thu Jan 12, 2017 4:42 pm
by Matlo
Hi,
The challenging part is reversing the FFB protocol. This can take a lot of time, and I don't think I have enough time for this.
Could you make a USB capture using my serialusb tool? This is the minimum input for someone to take this task.

Re: xbox classic support

Posted: Thu Mar 30, 2017 2:01 pm
by AllWheelDie
Hey there,

This is literally what I've been wanting to do for too long. All I want to do is use my G27 to play Rallisport Challenge 2 on my old Xbox. I'm willing to go to extreme lengths to get it working.

Is there anything I can do to contribute? I don't have any experience doing this stuff, but if I can be walked through this I will do my best to get you the information you need.

I'm even ok with just having the wheel emulate the controller analog stick if that's what it comes down to, which it probably will because from what I've read online is that back then the original Xbox didn't really have any good options for wheel.

Please let me know what I can do.

Re: xbox classic support

Posted: Fri Mar 31, 2017 12:30 pm
by Matlo
Hi,
Making a USB capture as said in my previous post is the first step.

Re: xbox classic support

Posted: Thu Jun 01, 2017 2:23 pm
by AllWheelDie
Sorry for not getting around to this, I've had things come up irl that's been keeping me busy.

Anyways, I came across this: http://xboxdevwiki.net/Xbox_Input_Devices

Does that help at all?

Re: xbox classic support

Posted: Thu Jun 01, 2017 3:02 pm
by Matlo
There already is a Xbox Classic firmware, it's called EMUXBOX. It's mostly untested.

Re: xbox classic support

Posted: Fri Jun 23, 2017 11:00 pm
by neo451
Hi,
When you say "It's mostly untested" it means that it wasn't working or it was created based on some documentation without connecting it to the real OG XBOX?
I recently tried to connect Dualshock4 to OG XBOX via DIY USB adapter (adapter that works perfectly fine with DFGT and PS4). Loaded (with gimx_loader) EMUXBOX firmware (atmega32u4.hex) onto adapter without problems. Created new config for DS4 with XboxPad preset.
But GIMX is not recognizing the adapter for some reason:

Code: Select all

global option -l with value `log.txt'
global option -c with value `Dualshock4_XBOX.xml'
controller #1: option -p with value `/dev/ttyUSB0'
now reading arguments for controller #2
status flag is set
subpos flag is set
force_updates flag is set
GIMX 6.7 ARMv6
Raspbian GNU/Linux 8.0 (jessie)
Linux 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 unknown
Bus 001 Device 011: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 010: ID 054c:05c4 Sony Corp. 
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 3: Dev 10, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 5: Dev 11, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
USB adapter detected, controller type is: XboxPad.
can't read packet header
Can't get adapter status.
gimx.c:208 main: no adapter detected 
GIMX running on Raspbian Jessie.

When I connect adapter usb side to Windows PC it's being recognized as "XBCD Xbox Controller" (VID_045E&PID_0202) so I assume that firmware is correct, but still GIMX gives the same error as with OG XBOX.
Is there any way to debug it?

Re: xbox classic support

Posted: Sun Jun 25, 2017 8:31 pm
by Matlo
Hi,
neo451 wrote: Fri Jun 23, 2017 11:00 pm When you say "It's mostly untested" it means that it wasn't working or it was created based on some documentation without connecting it to the real OG XBOX?
Yes that's what it means. I only tested it with a PC.

Please try this new firmware:
xbox_emu.hex.zip
(3.19 KiB) Downloaded 653 times

Re: xbox classic support

Posted: Sun Jun 25, 2017 11:14 pm
by neo451
Thanks for such a quick response but I think it got worse. Maybe not worse but different.
Still no response on OG XBOX side after launching GIMX on new firmware but it did not say "no adapter detected".
After loading new firmware my Windows PC stopped recognizing it as "XBCD Xbox Controller" - after plugging in for a second Windows sees it as "Arduino Micro bootloader (COMX)" and then it's gone. It's not being recognized as anything. If it's necessary I can launch some USB debugger to find out more.
I can also attach my controller config file but I don't think it's causing the problem - as you can see below buttons are identified correctly.

Code: Select all

global option -l with value `log.txt'
global option -c with value `Dualshock4_XBOX.xml'
controller #1: option -p with value `/dev/ttyUSB0'
now reading arguments for controller #2
grab flag is unset
status flag is set
subpos flag is set
force_updates flag is set
GIMX 6.7 ARMv6
Raspbian GNU/Linux 8.0 (jessie)
Linux 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 unknown
Bus 001 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 008: ID 054c:05c4 Sony Corp. 
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 3: Dev 8, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 4: Dev 7, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
USB adapter detected, controller type is: XboxPad.
no pass-through device is needed
using default refresh period: 8.00ms
0 1498431192.744512, left (255)
0 1498431192.928484
0 1498431193.104471, up (255)
0 1498431193.248486
0 1498431193.400459, right (255)
0 1498431193.520461
0 1498431193.664525, down (255)
0 1498431193.808500
0 1498431194.096520, rstick x (4)
0 1498431194.104536, rstick x (27)
0 1498431194.112541, rstick x (63), rstick y (1)
0 1498431194.120518, rstick x (99), rstick y (1)
0 1498431194.128511, rstick x (112), rstick y (1)
0 1498431194.152509, rstick x (113), rstick y (1)
0 1498431194.160506, rstick x (118), rstick y (1)
0 1498431194.168506, rstick x (128)
0 1498431194.176534, rstick x (128)
0 1498431194.440505, lstick x (-2), rstick x (128)
0 1498431194.448518, lstick x (-29), rstick x (128)
0 1498431194.456508, lstick x (-56), rstick x (128)
0 1498431194.464536, lstick x (-86), rstick x (128)
0 1498431194.472514, lstick x (-112), rstick x (128)
0 1498431194.480506, lstick x (-128), rstick x (128)
0 1498431194.736510, lstick x (-118), rstick x (128)
0 1498431194.744532, lstick x (-94), rstick x (121), rstick y (6)
0 1498431194.752544, lstick x (-70), rstick x (101), rstick y (12)
0 1498431194.760513, lstick x (-32), rstick x (77), rstick y (13)
0 1498431194.768512, rstick x (45), rstick y (13)
0 1498431194.776506, rstick x (2), rstick y (8)
0 1498431194.784529
0 1498431194.792510, lstick x (1)
0 1498431194.800508, lstick x (24), rstick x (-9)
0 1498431194.808511, lstick x (56), rstick x (-36)
0 1498431194.816534, lstick x (89), lstick y (1), rstick x (-71)
0 1498431194.824513, lstick x (116), lstick y (5), rstick x (-109)
0 1498431194.832506, lstick x (128), lstick y (6), rstick x (-128)
0 1498431194.840502, lstick x (128), lstick y (6), rstick x (-128)
0 1498431194.848548, lstick x (128), lstick y (6), rstick x (-128), rstick y (1)
0 1498431194.928503, lstick x (128), lstick y (6), rstick x (-128), rstick y (2)
0 1498431194.936508, lstick x (128), lstick y (6), rstick x (-128), rstick y (4)
0 1498431194.952506, lstick x (128), lstick y (5), rstick x (-128), rstick y (4)
0 1498431194.968508, lstick x (128), lstick y (2), rstick x (-128), rstick y (2)
0 1498431194.976534, lstick x (128), rstick x (-113), rstick y (2)
0 1498431194.984512, lstick x (128), rstick x (-98), rstick y (1)
0 1498431194.992509, lstick x (128), rstick x (-85)
0 1498431195.000509, lstick x (128), rstick x (-74)
0 1498431195.008540, lstick x (125), lstick y (-2), rstick x (-70)
0 1498431195.016508, lstick x (120), lstick y (-17), rstick x (-67), rstick y (-2)
0 1498431195.024507, lstick x (108), lstick y (-41), rstick x (-66), rstick y (-16)
0 1498431195.032512, lstick x (98), lstick y (-64), rstick x (-64), rstick y (-28)
0 1498431195.040538, lstick x (87), lstick y (-89), rstick x (-64), rstick y (-45)
0 1498431195.048518, lstick x (81), lstick y (-113), rstick x (-64), rstick y (-72)
0 1498431195.056505, lstick x (77), lstick y (-128), rstick x (-64), rstick y (-98)
0 1498431195.064504, lstick x (66), lstick y (-128), rstick x (-64), rstick y (-128)
0 1498431195.072528, lstick x (56), lstick y (-128), rstick x (-64), rstick y (-128)
0 1498431195.080510, lstick x (51), lstick y (-128), rstick x (-64), rstick y (-128)
0 1498431195.088513, lstick x (39), lstick y (-128), rstick x (-64), rstick y (-128)
0 1498431195.096499, lstick x (35), lstick y (-128), rstick x (-64), rstick y (-128)
0 1498431195.104538, lstick x (24), lstick y (-128), rstick x (-54), rstick y (-128)
0 1498431195.112517, lstick x (20), lstick y (-128), rstick x (-44), rstick y (-128)
0 1498431195.120509, lstick x (13), lstick y (-128), rstick x (-36), rstick y (-128)
0 1498431195.128509, lstick x (12), lstick y (-128), rstick x (-28), rstick y (-128)
0 1498431195.136531, lstick x (12), lstick y (-128), rstick x (-25), rstick y (-128)
0 1498431195.168528, lstick x (12), lstick y (-128), rstick x (-24), rstick y (-128)
0 1498431195.176508, lstick x (12), lstick y (-128), rstick x (-22), rstick y (-128)
0 1498431195.184510, lstick x (12), lstick y (-128), rstick x (-21), rstick y (-128)
0 1498431195.272504, lstick x (12), lstick y (-128), rstick x (-20), rstick y (-128)
0 1498431195.280511, lstick x (10), lstick y (-128), rstick x (-20), rstick y (-128)
0 1498431195.288511, lstick x (8), lstick y (-128), rstick x (-20), rstick y (-113)
0 1498431195.296536, lstick x (1), lstick y (-98), rstick x (-20), rstick y (-79)
0 1498431195.304515, lstick y (-48), rstick x (-18), rstick y (-17)
0 1498431195.312510, rstick x (-4)
0 1498431195.320507, rstick y (22)
0 1498431195.328541, lstick y (17), rstick y (56)
0 1498431195.336513, lstick y (55), rstick y (118)
0 1498431195.344509, lstick y (105), rstick x (-4), rstick y (128)
0 1498431195.352517, lstick y (128), rstick x (-4), rstick y (128)
0 1498431195.360538, lstick y (128), rstick x (-2), rstick y (128)
0 1498431195.368526, lstick y (128), rstick y (128)
0 1498431195.536524, lstick y (128), rstick x (1), rstick y (128)
0 1498431195.544580, lstick y (128), rstick x (5), rstick y (112)
0 1498431195.552579, lstick y (128), rstick x (5), rstick y (52)
0 1498431195.560542, lstick y (128)
0 1498431195.592502, lstick y (128)
0 1498431195.600535, lstick y (116)
0 1498431195.608525, lstick y (95)
0 1498431195.616531, lstick y (33)
0 1498431195.624522
0 1498431196.168513, black (255)
0 1498431196.304505
0 1498431196.432507, white (255)
0 1498431196.576537
0 1498431196.736525
0 1498431196.744518, RT (110)
0 1498431196.752513, RT (255)
0 1498431196.928530, RT (255)
0 1498431196.936515, RT (159)
0 1498431196.944512, RT (32)
0 1498431196.952511
0 1498431196.960529
0 1498431196.968520
0 1498431196.992534
0 1498431197.000507
0 1498431197.008510, LT (124)
0 1498431197.016505, LT (255)
0 1498431197.296502, LT (129)
0 1498431197.304516
0 1498431197.312538
0 1498431197.320518
0 1498431197.528501, A (255)
0 1498431197.664528
0 1498431197.824531, X (255)
0 1498431197.936502
0 1498431198.064503, Y (255)
0 1498431198.168498
0 1498431198.280505, B (255)
0 1498431198.424499
0 1498431198.648501, A (255)
0 1498431198.792506
Exiting 

Re: xbox classic support

Posted: Mon Jun 26, 2017 7:54 am
by Matlo
This is normal operation, the controller now starts communicating when GIMX gets started.

The Xbox Classic controller is very special, it contains a hub which connects a gamepad and a memory controller to the console.
The provided firmware only implements the gamepad, not the hub and the memory controller. Maybe this is a problem.