Hi, I've 3 wheels for my old T500 base and wanted to use them on a new OSW so I started to investigate how to use an Arduino to grab buttons and send them to the PC via USB. First of all I wanted to thank you for all you awesome work. It helped me a lot!. I've just discovered that my Ferrari GTE Wheel Add-On (Ferrari 458 Challenge Edition) requires the maximum SPI speed to be set to 8MHz
@mispeaced
6 жыл бұрын
Hey! Glad it helped you. Yea, to read GTE Challenge you need to add SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0)); into setup function, before SPI.begin - then it works. Could you post your readings for GTE with all buttons released? Thanks
@ignaciohernandezros
6 жыл бұрын
Well, In order to read all 3 wheels I need to set speed to 4Mhz SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0)); Then here are my findings with buttons released and the identification of each one of the buttons for the 3 wheels Note I'm using Spark Fun Pro Micro board (that affects only board pin numbers) /* * * * rr-m.org/blog/hacking-a-thrustmaster-tx-rw-gaming-wheel-with-arduino-uno-part-1/ * * rr-m.org/blog/wp-content/uploads/2015/04/txrw_1_12.jpg * * 1. Green - not used (connected to GND via 100k resistor, may be reserved for MOSI?) * 2. Blue - GND (ground) * 3. White - MISO (master-in-serial-out, this is a serial data line from wheel to base) * 4. Orange - SS (slave select, also called PL - parallel load) * 5. Red - SCK (sync clock impulses, each time pulse comes, shift register outputs 1 bit) * 6. Black +VCC (Arduino Uno uses +5V, wheelbase uses +3.3V - remember for future!) * * On Arduino Uno side it must be connected as follows: * * Green -> not used (or can be connected to arduino MOSI pin 11) * Blue - GND -> arduino uno GND pin * White - MISO -> arduino uno pin 12 * Orange - SS -> arduino uno pin 7 * Red - SCK -> arduino uno pin 13 * Black +VCC -> arduino +5V pin * * On Arduino Pro Micro side it must be connected as follows: * * Green -> not used (or can be connected to arduino MOSI pin 16) * Blue - GND -> arduino uno GND pin * White - MISO -> arduino uno pin 14 * Orange - SS -> arduino uno pin 7 * Red - SCK -> arduino uno pin 15 * Black +VCC -> arduino +5V pin (or RAW if USB current is +5V already) * * * 599XX EVO 30 Wheel Add-On Alcantara Edition * * 01011111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 * * 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 * Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 * * Byte 1 * 7 - constant 0 * 6 - constant 1 * 5 - constant 0 * 4 - left paddle (Gear down) * 3 - right paddle (Gear up) * 2 - PIT (up left right) * 1 - WASH (down left left) * 0 - RADIO (up right left) * * Byte 2 * 7 - black unnamed (down left right) * 6 - MAIN DOWN (down right) * 5 - MAIN UP (down right) * 4 - SCROLL (up right right) * 3 - FLASH (up left left) * 2 - * 1 - * 0 - MAIN press (down right) * * Byte 3 * 7 - pad DOWN * 6 - pad RIGHT * 5 - pad LEFT * 4 - pad UP * 3 - constant 1 * ... * 0 - constant 1 * * Byte 4 to 8 * 7 - constant 1 * ... * 0 - constant 1 * * T500RS Original * * 00011111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 * * 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 * Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 * * Byte 1 * 7 - constant 0 * 6 - constant 0 * 5 - constant 0 * 4 - R2 (PS2) * 3 - Triangle (PS2) * 2 - Circle (PS2) * 1 - Square (PS2) * 0 - Cross (PS2) * * Byte 2 * 7 - SE (PS2) * 6 - L2 (PS2) * 5 - Playstation (PS2) * 4 - ST (PS2) * 3 - pad DOWN * 2 - pad RIGHT * 1 - pad LEFT * 0 - pad UP * * Byte 3 to 8 * 7 - constant 1 * ... * 0 - constant 1 * * Ferrari GTE Wheel Add-On (Ferrari 458 Challenge Edition) * * 01000000 10101111 11111111 11111111 11111111 00000000 00000000 01000000 * * 76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210 * Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 * * Byte 1 * 7 - constant 0 * 6 - constant 1 * ... * 0 - constant 0 * * Byte 2 * 7 - SCROLL (up right left) * 6 - constant 0 * 5 - constant 1 * 4 - constant 0 * 3 - left paddle (Gear down) * 2 - right paddle (Gear up) * 1 - PIT (up left right) * 0 - WATER (down left left) * * Byte 3 * 7 - Selector PRESS (down right) * 6 - WIPER (down left right) * 5 - Selector 2 (down right) * 4 - Selector OFF (down right) * 3 - RADIO (up right right) * 2 - FLASH (up left left) * 1 - constant 1 * 0 - constant 1 * * Byte 4 * 7 - constant 1 * 6 - pad DOWN * 5 - pad RIGHT * 4 - pad LEFT * 3 - pad UP * 2 - constant 1 * ... * 0 - constant 1 * * Byte 5 * 7 - constant 1 * ... * 0 - constant 1 * * Bytes 6-7 * 7 - constant 0 * ... * 0 - constant 0 * * Byte 8 * 7 - constant 0 * 6 - constant 1 * 5 - constant 0 * ... * 0 - constant 0 * */
@mispeaced
6 жыл бұрын
Thanks! GTE Challenge read-out doesn't match what I have. One of my subscribers sent me the data for this rim - first byte (01000000) is not there at all. But the rest matches. May be he ignored the first byte, because it's constant, I'm not sure. Ferrari 458 Challenge GTE Wheel Read-Out: 10101111 11111111 11111111 Byte 0: 7 - Scroll (Circle, button 5) 6 - Constant 0 5 - Constant 1 4 - Constant 0 3 - Gear Down (L1, button 1) 2 - Gear Up (R1, button 2) 1 - Pit (Triangle, button 3) 0 - Water (Square, button 4) Byte 1: 7 - Mannettino 1 (TC1, PS, button 13) 6 - Wiper (Cross, button 6) 5 - Mannettino 2 (TC2, Select, button 7) 4 - Mannettino Off (TC0, Start, button 8) 3 - Radio (R2, button 9) 2 - Flash (L2, button 10) 1 - Constant 1 0 - Constant 1 Byte 2: 7 - Constant 1 6 - Dpad Down 5 - Dpad Right 4 - Dpad Left 3 - Dpad Up 2 - Constant 1 1 - Constant 1 0 - Constant 1
@mispeaced
6 жыл бұрын
I've added Reader sketch for GTE wheel into Part1 article. This sketch produces the read-out above. rr-m.org/tx_wheel/ferrari_gte_challenge_reader.zip
@ignaciohernandezros
6 жыл бұрын
We need more people to confirm. Anyway, I found that with different values on SPISettings (speed) bits might be displaced and some buttons could not be recognised on some rims. The value (4 MHz) was the only one where I could read all rims and all buttons on all rims. Note also I'm reading 8 bytes as you said in part 2. I've already prepared the USB part as a device with 32 buttons and a HAT switch with 8 positions plus null. Now I'm having fun with the process of writing the complete loop to read values, identify rim, set buttons and update USB bus.
@ZpiX4672
Ай бұрын
Thanks alot!! I just took my TMX wheel apart to reverse it... no need.. again thanks for this!
@RamjetX
7 жыл бұрын
Just bought my T300RS GT edition. Modded Logitechs in the past and thought I'd google up some T300 mods. Very good blog write up. Fantastic idea to use an arduino to pretend to be a Parallel in Serial out IC.
@mispeaced
7 жыл бұрын
Thanks! Good luck in your mods!
@davidhusolo6607
Жыл бұрын
What about support for using the shifter port on the back for a sequential shifter and analog handbrake?
@RODEO-sn6du
10 ай бұрын
Hi hi I'd like to use your idea to hook up a an existing TX steering wheel to my direct drive wheelbase not hooking it to wheelbase just going to go straight to the PC with the wheel. I'm just going to run it on my direct drive wheel base. could you write me a sketch for the pro micro for just the wheel please. Thank you
@noodlehooman7204
2 жыл бұрын
Is this software and stuff compatable with a Thrustmaster sparco r383?
@paulotoledo4839
2 жыл бұрын
Good afternoon friend, I have a Thrustmaster T300 (base) with a Bentley GT3 rim. The bezel has 12 buttons, with 4 encoders + button. But the rim is being hooked up to the PC. And I would like to plug it directly into the base, via the mini-6 din. But as I have little knowledge of Arduino, I would like to know what you recommend? Thanks
@mispeaced
2 жыл бұрын
Hi! Really not sure about connecting Fanatec wheels to Thrustmaster bases, no ready-to-use solution
@thifremana
3 жыл бұрын
Fantastic job !!!
@mispeaced
3 жыл бұрын
No problem :)
@himstien
4 жыл бұрын
Hi, I have the F1 add on wheel. It does not have the serial registers but I assumed it would still use the spi but I can't get any dump. Can you please help me with getting the data from that pcb? I tried both arduino and esp ( I assumed 3.3v logic might be better suited for it)
@mispeaced
4 жыл бұрын
Hey. Email me - I'll give you some instructions.
@mispeaced
4 жыл бұрын
Ah, I've found your email. Replied.
@KINGMAMMAL69
8 жыл бұрын
question are the buttons normally open or normally closed I assume open as you're grounded signal is given when pressed?
@mispeaced
8 жыл бұрын
Logic level 1 means button is "open" (released), logic level 0 (grounded) means button is closed (pressed). By default all buttons are released of course (disconnected from the ground). Read my article for more info.
@lukaszentalis9989
6 жыл бұрын
Hello, thank you for sharing this awesome project. I have a few questions, since I'm experiencing some problems with my project. I'm using TS-PC Racer wheel. At first I tried reading my Ferrari GTE wheel using the Arduino Nano with the provided sketch, but the outputs were just a random mixture of 1's and 0's without any order. In your example you had lines with 1's and when you press a button it would show up as 0. In my case, only a few buttons give out a 0 in that mess. So I then decided to use the provided sketch for the 458 Italia wheel. It looks like it's working ok, and the TS-PC wheel base is registering different button presses, but I occasionally get random button presses when I'm driving. Sometimes random upshifts occur, sometimes paddle shifts are not registered, my dashboard is blinking with lights on and off. This generally occurs when I'm turning the wheel harder or when I'm drifting and wheel countersteers fast. I also tried to look what happens in the Thrustmaster profiler. When this behaviour occurs it seems that all of the buttons are pressed at once. They blink for a very brief time. Maybe you have an idea what is happening and how to fix that?
@mispeaced
6 жыл бұрын
Regarding Ferrari GTE - I remember this rim wants an additional SPI.beginTransaction. Email me (see my blog -> about) and I'll send you the code. Regarding "all buttons pressed at once" - looks like bad contact or power supply problem. When you rotate the wheel actively, main motor (force feedback) eats all the power -> as a result the rim electronics doesn't get enough and resets. But that's just an idea.
@elcid4130
7 жыл бұрын
Any chance you know where I can get a similar switch that is used for the Manettino? Going crazy trying to find something for my new project! Thanks for any help!
@mispeaced
7 жыл бұрын
I never saw the switch, that rotates (and returns to center) like manettino on sale. But you can buy linear switch easily. Search on eBay 'T80-R SPDT', 'Rocker Switch single pole 3 position centre off biased', 'MARQUARDT 1818.1302-00', 'SMALL ROCKER SWITCH 6A CENTRE OFF', 'ROCKER SWITCH MOMENTARY CENTRE OFF'
@elcid4130
7 жыл бұрын
mispeaced I knew about the rocker switches but really wanted the dial type, oh well my luck. I guess I will try to somehow make something. Thank you so much for taking the time to help!
@redmundperrz7234
Ай бұрын
I looking for this for ages, i hope you update this video just using SDK perhaps C# or any language
@StrongManBR
9 жыл бұрын
Great work! Thanks for sharing!
@sbdtoni
7 жыл бұрын
Hi I have a Thrustmaster 599 xx Evo and I want to connect directly to the Pc without Thrustmaster base, can help me? I know that the protocol are SPI i have Arduino nano and Leonardo but I have some questions first i need to made that the Arduino is reeder like a Joystick? Like Leojoy, do you have the file necessary to program the Arduino to be that the buttons are funcionals? Many thanks
@mispeaced
7 жыл бұрын
You'll probably want to look at Teensy LC (it's Arduino clone) - it has USB Joystick library - www.pjrc.com/teensy/td_joystick.html 2 things need to be done: 1. Read buttons state from your 599 xx Evo - as I did in my reader sketch 2. Use teensyduino joystick library to send those buttons to PC via usb Original Arduino Uno/Nano doesn't have HID Joystick library - that's why you need Teensy. Not sure about Leonardo board (google 'Arduino Leonardo HID Joustick')
@sbdtoni
7 жыл бұрын
mispeaced hi many thanks yes Leonardo is read like a joystick i have put in Leonardo the pedals and handbrake in analogue system and Leonardo is reading for pc like a Joystick and Leonardo have SPI my question is if I put the Wheel in Leonardo SPI port will read the buttons of the wheel Many thanks
@mispeaced
7 жыл бұрын
That's good. Then connect your wheel to Leonardo - as I show on my schematics + use my reader sketch to read buttons (via SPI). Reader sketch does it every second - you need to scan every 10-20ms (to have 50Hz-100Hz poll rate). Then save buttons state into variable (or array of variables). Then pass that to Joystick library that Leonardo provides. That's in theory :)
@sbdtoni
7 жыл бұрын
hi many thanks but not works with the buttoms, i connect the wheel in SPI ports but not do nothing when i press a buttom, i not know how programing the Arduino, the Pedals and handbreak work fine in Arduino Leonardo, if i's not possible to read to the wheel, i'll put cables for each buttom and i'll pas to digital points in Arduino leonardo, it's not the best option...but will works fine. many thanks for your help. kind regards.
@mispeaced
7 жыл бұрын
Okay, at least we see the problem - SPI connection between Arduino and 599 wheel doesn't work, right? Email me a picture how you connected it, please (my email is here - rr-m.org/blog/about/) and let's check what can be wrong.
@noahlenox1182
6 жыл бұрын
Where did u buy the 6 pin male and female connectors. i broke mine and need new ones
@mispeaced
6 жыл бұрын
I didn't. PS/2 male is from 458 Italia steering wheel, PS/2 female cable - extracted from TXRW wheelbase. Couple ideas for you: www.ebay.com/sch/i.html?_nkw=ps%2F2+male+male www.aliexpress.com/wholesale?SearchText=mini+din+6+male
@markus4692
7 жыл бұрын
I tried it with my 500rs but I have a different button layout than you. also all the a buttons don't work at all. any idea? tried 2 nanos
@mispeaced
7 жыл бұрын
T500RS wheelbase differs from T300/TXRW, so there's a dedicated sketch for it - t500_gt_wheel_emu_13buttons.ino. See rr-m.org/blog/emulating-thrustmaster-t500-gt-wheel-electronics-with-arduino/
@nancyhankamp8696
4 жыл бұрын
Hi I tried it with t150 wheelbase... it hast no ps2 Adapter. I tried Different ino. Only the t500 no bitshift works half... 5 of 13 Buttons can be used. Maybe somebody could Help... Could i also read with arduino nano? I hope somebody can Help. I Connect it to ps4
@mispeaced
4 жыл бұрын
Thanks for feedback. T150 stays unsolved. We can read the wheel with nano + there's a test emulator sketch. Email me if you want to give it a try.
@Ankan..
6 жыл бұрын
Hello great videos. I got a problem i need 2 fix with my thrustmaster tx ferrari hub. I need to connect an extra b-butten and an extra start butten from inside the hub itself. Not cut the wires but just peel them of a bit and souder 2 extas to it so to say. Because i all ready got a different wheel fore the hub but there is no buttons on that and i can't get my controler b butten to work as a hand break on the controller when it,s connected with the drift wheel. Or the start button. So what i need to know is what cable goes to what inside the hub after the electrailcard?? Is that anything you can possibly give me a tip about? Thanks from Sweden
@mispeaced
6 жыл бұрын
Thrustmaster TXRW wheelbase (you call it "hub"? correct me if I'm wrong, please) has 3 buttons on it - Mode, Button 11, Button 12. Also, I got a feedback, that a guy managed to find Gear Up/Gear Down connectors somewhere inside the wheelbase. So, if you're trying to add buttons by soldering wires to something inside the wheelbase - those 5 buttons (Mode, 11, 12, Gear Up, Gear Down - if you find them) are your only options. Replicating other buttons, that exist on stock steering wheel is done by soldering wires directly to steering wheel itself OR via making your arduino-based electronics and connecting it to front wheelbase ps/2 socket (as shown on video).
@Ankan..
6 жыл бұрын
mispeaced yea my thoughts were 2 just put some extra buttuns on the existing wierers in the hub= by that i mean the stearing box so 2 speak.. because i got a drifting wheel with no buttons on it at all. Works great with Dirt3-4 but not on Forza 7 or project cars. So what i wanted 2 know was witch wieres go 2 what in the hub/steringbox
@StrongManBR
9 жыл бұрын
Please, can we make th8RS work like TH8a translating/emulate with arduino?
@JoseVera-bq4xn
5 жыл бұрын
Thank you very much for sharing this great project. I have a problem checking the buttons with a Nano cand a Uno clones. in the serial monitor only the gear up appears with the digit 0 wen pressed(last on the first eight digits line). The other 16 digits always remain in 1. I have checked all the connections. Is it possible that it is a problem for Chinese clones? I have directly connected the nano to the uno and the uno to the pc. both the 3.3 and the 5v feed do the same. I do not have a thrustmaster base. Can I check it without it?
@mispeaced
5 жыл бұрын
As far as I can understand, you uploaded Emulator sketch to Nano + Reader sketch to Uno? And you're trying to verify your Emulator code? Email me close up photos of your wiring (blog -> about for email) - I'll take a look. It's not related with Chinese arduinos - you can take any board.
@JoseVera-bq4xn
5 жыл бұрын
if exactly that. With the ferrari_gte reader of 8 bytes, it seems that if the buttons act but in a random way. My knowledge of electronics and English too ... is a bit fair. sorry! I'll send you the photos, thanks for your time
@anidiotinaracingcar4874
4 жыл бұрын
Any chance you can publish part 0.5 where you take the wheel apart from the base?
@mispeaced
4 жыл бұрын
Wheel mounts to the base (in my case it was TXRW base and 458 Italia Add-on wheel) with Thrustmaster quick-release system - so called threaded mount, as every other TM add-on wheel (F1, 599X, 28 GT). Not much to show there: plug the wheel into base + turn big plastic nut on a plastic thread. Done.
@anidiotinaracingcar4874
4 жыл бұрын
@@mispeaced I don't know how it is on this wheel but it took me days to understand the big plastic nut on my ffdrw was indeed a nut and needed to be unscrewed (I saw that just before seeing your answer, in fact)
@MegaGlic
7 жыл бұрын
can you help me? I try to do this mod, but all buttons are pressed. How can i resolve it?
@mispeaced
7 жыл бұрын
What exactly are you trying to do? Are you connecting rim to arduino to read it (like in this video)? Or you connected arduino to wheelbase (like in part 3)?
@MegaGlic
7 жыл бұрын
I connected arduino to whellbase using arduino nano 5v.
@mispeaced
7 жыл бұрын
Okay, it's like in part 2 and 3 videos. What wheelbase do you have? TXRW? T500? T300?
@tmralextheone4179
4 жыл бұрын
Beautiful video and great for being able to do this job. I have a Thrustmaster TS-XW Racer and I would like to try to make a wheel, the reading program is always the same? Thank you
@mispeaced
4 жыл бұрын
Hi. See the blog post - there are two reader sketches, you can use any to dump yor wheel.
@IngenieroIllescas
4 жыл бұрын
hola! gran trabajo! tengo un problema, estoy verificando con arduino uno si son correctas las lecturas de los bytes de la rueda para base TX con arduino nano , pero obtengo 11000001 11111111 11111111 y al pulsar cualquier pulsador cambia a 11000001 00000000 00000000, que puede ocurrir?
@mispeaced
4 жыл бұрын
Hi! What sketch are you using - tx_rw_wheel_reader.ino or ferrrari_gte_challenge_reader.ino?
@vincenzomaci7078
5 жыл бұрын
hi, I don't know if you use this account yet. my projet isn't work, i don't know why nut it presses all buttons random and, please someone answer me
@mispeaced
5 жыл бұрын
see my blog -> about rr-m.org/blog/about/
@vincenzomaci7078
5 жыл бұрын
mispeaced I don’t know why
@mispeaced
5 жыл бұрын
@@vincenzomaci7078 Hi Vincenzo. Just email me - what is your thrustmaster device, what are you trying to build with arduino, which one of my sketches you're using + attach some detailed photos oh how you connected it all together - and I'll take a look, may be will have some idea why it doesn't work.
@vincenzomaci7078
5 жыл бұрын
Tanks mispeaced, would you give me the email?
@mispeaced
5 жыл бұрын
@@vincenzomaci7078 see the link above ^
@maxketschik5625
4 жыл бұрын
Very interesting Idea, but I've got 3 questions: 1. How did you determine the functionality of the wires in the protocol? I mean how did you know that the red wire is clock? 2. If the output of your Arduino is 5V, aren't you risking to potentially destroy something? 3. Why not use a logic analyzer to demonstrate exactly what you did in your blog ;)
@mispeaced
4 жыл бұрын
1. Tear apart steering rim and trace wires to IC to find out GND, VCC and the rest. ICs inside steering rim are HEF4021BT shift registers - so it's easy to find GND/VCC/SCK/PL. See Part 1 in my blog for more info. 2. Arduino is powered directly from the wheelbase, which provides you 3.3V only. That means we have 3.3V logic levels everywhere. We do not use external power or USB 5V power for Arduino. 3. I don't have logic analyzer :))
@mispeaced
4 жыл бұрын
Ah, also - HEF4021BT has a wide supply voltage range - from 3 to 15 volts. So reading steering rims with Arduino is quite safe - even if you power everything with 5V USB.
@maxketschik5625
4 жыл бұрын
Hm, I see. I just took apart my G29 and backtracing the wires is almost impossible, so the logic analyzer came in quite handy (it's a cheap clone for only 6$). Oh, and thank you for your fast reply!
@kennethscott2010
5 жыл бұрын
Not sure if you currently monitor this thread but I figured I'd git it a shot any how. I was planning to mod an F1 rim using similar configurations as the original TM Ferrari F1 add on wheel. I noticed in your article you mentioned changing the bits from 3 to 8. Just out of curiosity, can you make a video or a sketch of this for me in Arduino for me. I'm sure it would prove useful for other in the future. Thanks.
@mispeaced
5 жыл бұрын
If you need a dump for F1 rim just email me.
@rodriber
6 жыл бұрын
Does it work with the t300???
@mispeaced
6 жыл бұрын
Sure! Read the comments below Part 3 video - you'll need them.
Пікірлер: 78