FFB simracing steering wheel
I have always wanted to have a simracing setup. And wheelbases available on the market are either expensive or not powerful enough. Also every wheelbase on the market is closed-source, and that limits me to the feature it offers out of the box. And after spending some time on YouTube, I decided to build my own Force Feedback simracing wheel base. For cheaper than some wheels on the market, I could build something much more powerful, easy to modify wheelbase. To keep costs low, I decided to go with a direct-drive wheelbase using a hoverboard motor that I could salvage from a broken hoverboard on Marketplace. Being a direct drive setup will give me the best force feedback compared to belt/gear drive, while also being much more silent. This setup can enable me to have 12-15Nm of force feedback. And for comparaison, the Logitech G29, the most popular wheel out there, only offers 2.1Nm, and is a gear drive setup.
Created by
Oussama NAOUAR
Tier 1
50 views
3 followers
Oussama NAOUAR
submitted FFB simracing steering wheel for review ago
Iamalive 🚀
requested changes for FFB simracing steering wheel ago
Honestly this is such a well-made project! You've done a great job to show your process and follow the rules :) Just one small thing though - is the sheet metal necessary? I'm not entirely sure if you're planning to use the grant to buy it(since your bom does total over $400), but since it is in your cart screenshots, I'm assuming it is. If so, we can't allow the grant to be used :(
Ahmed Ameur Kh
gave kudos to FFB simracing steering wheel ago
Awesome project!
Oussama NAOUAR
submitted FFB simracing steering wheel for review ago
Oussama NAOUAR
added to the journal ago
To sum up (+ banner picture)
18-01-2026

I really enjoyed working on this project.
It is a project that I have always dreamed of designing, and hopefully building after I get a grant.
The Blueprint program really motivated me to design this project, and convert my thoughts and ideas to files, and hopefully in the future, a real working system.
Along this 68-hour jouney, I was able to learn a lot of thins, among which was PCB design.
For this project, I designed my first ever PCB on KiCad, and got the occasion to learn how to make symbols and footprints.
This project also sharpened my skills in CAD, and made me use some features I never thought existed. And the thing I was most excited about, was to directly make and edit a new part inside of an assembly.
This project was also my entry gate to the STM32Cube environment. This really clarified the differences between STM32CubeIDE and STM32CubeMX, taught me a bit about MCU configuration...
And most importantly, working on this project late at night, really made me realize the importance of well resting and a good sleep schedule.
My PC, despite the pretty low specs, did a great job. It really struggled in the 3D design when it started coming up together, but I tried learning how to optimize ressources usage... I tried to model everything part of the design, and that would affect the design, but had to exclude some components that wouldn't affect the design.
I am really grateful and happy for what I was able to make and achieve. Making this project in less than a month, most of it (arount 55hrs) before the previous submission deadline was really challenging, especially considering that I was working on a HackPad, another project (the Amplifier model), and studying in parallel.
This really shows that when you put your mind and time into something, you are really beyond able to achieve it.
Oussama NAOUAR
added to the journal ago
Porting The Code Pt.2 ; Success
16-01-2026
As soon as I got back home from school, I opened my computer, aiming to finally finish the project design to be able to submitt soon.
I opened STM32CubeIDE, and loaded the project that had "finished importing".
When I clicked on Generate Code, some errors popped up.
Slowly but surely, I tried fixing some by myself, while I got some help online for others.
The most important ones I think, are I2C and Timer configurations.
As I am very new to the STM32Cube environment, I struggled a bit, but then I finally was able to generate code.
But in contrast to what I inistially thought, Generate Code only imported the librairies initalized before when I imported the project, along with the pin, buses, and clock configurations.
But already getting all of the librairies and configuration included almost automatically is really nice.
And STM32CubeMX directed me to CubeIDE, so as I thought, a .ioc configuration file was really necessary.
Then I went to the original OpenFFBoard project directory, and tried manually importing and arranging files and folders.
After some time, I tried building the project, I got a bunch of red lines and errors in the console. But upon further inspection it turned out that STM32CubeIDE built all of the open projects at that time, so the errors were related to the first porting attempt I made before.
I closed that project, and tried building again, and SUCCESS !
The code compiled without errors !

After that was done, I proceeded to make the code for the Seed XIAO RP2040 board in Arduino IDE.
I made it in a way that it would only send the button data when a button changes state, so that it doesn't keep sending data and avoid inducing game input lag on the wheelbase's side.
That's it ! The final steps in making the project design is done !
CAD ✅
PCB ✅
Firmware ✅
All that was left to do is preparing the files needed in the Github repo.
And by the time of writing this journal entry, everything was done and added to the repo. Just missing some readme.md files in the sub directories.
PS : Time logged in this journal entry is only the time spent on the codes.
Oussama NAOUAR
added to the journal ago
Porting The Code Pt.1 ; Failed attempt
15-01-2026
Now that everything is finished, it was time to take care of the firmware.
I will use OpenFFBoard firmware available here :
https://github.com/Ultrawipf/OpenFFBoard/tree/master
It is an opensource firmware that is designed to handle the ODESC board.
The problem is that this firmware is now only compatible with 3 STM32F4 microcontroller models.
I used the STM32H743VIT6 in my wheelbase, so I have to port the code.
When I did my first research on Bing, the first thing that popped up is this YouTube video :
https://youtu.be/tURj2me-wxE?si=_crX2SMm3uQs-1Zu
At first, this seems like a very good tutorial, as it is apparently a stream replay, so no cuts whatsoever.
I started following the guide bit by bit, but soon started running into some issues.
Apparently STM32CubeIDE changed a lot in 4 years :/
The STM32 drivers package wasn't downloaded automatically, so I had to manually download it.
Also STM32CubeIDE didn't arrange the files like it did on the tutorial.
The tutorial seemed very based on the project he was working on, so he didn't really explain what should be done in general.
I tried fixing the files arrangement and everything, but I then found out that STM32CubeIDE didn't make a .ioc file.
I am very new to STM32Cube ecosystem, as I used to code in ArduinoIDE, so I made Bing and Google research along the tutorial. And apparently to configure FreeRTOS, I needed a .ioc file.
I tried outsmarting STM32CubeIDE :
- Made a blank .ioc file in the project directory, STM32CubeMX didn't recognize it :(
- Copied the original .ioc file from Github for the STM32F407VG board, and tried modifying all of the MCU ID, Model... in notepad. I thought that it will keep the same pin config... When I opened it, STM32CubeMX correctly showed the STM32H7 MCU that I was using, but also showed some errors, and purple pins that apparently meant that something is very wrong. Also some errors on the clock config popped up. Turns out these microcontrollers have very different architectures inside.

Since not everything was porperly kept/reset, and I did it the very hard and direct way, and it showed some errors when I first tried compiling the code, I decided to give up on this tutorial.
I tried looking for other solutions, till I found this one on the ST website.
I tried reproducing the same steps mentioned there.
The first attempt resulted in the process taking very long.
I stopped it, and restarted it again, same result.
I thought maybe because it is not the same STM32 family, so I tried with another F4 MCU, and it worked quickly.
I then tried disabling the CAN1 in the original project, since before trying to import it, it shows something related to CAN1.
I also restarted a new importation of the original firmware in parallel.
I tried leaving them work in the background and went on to work on the BOM (not logged into this journal time).
The original firmware finished importing, but showed some error messages.
The firmware without CAN1 still didn't finish.
I pressed OK on the project that finished importing, and STM32CubeMX again went to a new infinite loading time cycle.
I noticed that when I bring it back to the front of the desktop, fans ramp up, so I kept it there and went to prepare myself for bed.
When I opened task manager, I found it saying efficiency mode.
So what I did, was close the copy of the firmware without CAN1, and in the task manager, I set that process priority to realtime.
The system felt really sluggish afterwards, but it didn't matter.
I left it there until I finish my doomscrolling session.
And when I heard the PC fans get quieter, I jumped out of bed to save the project, and shut down the PC and sleep.
We'll see how everything goes afterwads.
I know, this entry is very long, but I tried logging my troubleshooting steps...
Note that only hand-on time working on the firmware is logged. BOM, doomscrolling, preparing for sleep isn't counted here :)
Oussama NAOUAR
added to the journal ago
Wiring Diagrams
15-01-2025
Today, I made the wiring diagrams.
I downloaded some pictures of the multiple components used, and launched Freeform to make the diagrams.
First, I started by the wheelbase's diagram. It will show how components external to the PCB are connected.

I simplified this diagram when it comes to the encoders and GX12 connectors' connections, so that it doesn't look overwhelming. But here is how they will be connected :
For the GX12 connectors, they will be connected to a male JST-XH connector each, like shown below :

Same thing for the rotary encoder :

For the motor's encoder connector, I will have to check it when I buy it, since they usually differ from a model to another. So I might have to attach a new connector to the motor's encoder if the original one doesn't fit into the ODESC connector.
Now, time for the wheel's wiring diagram.
The steering wheel will also use a dedicate microcontroller, so that only 4 wires in total (2 signal wires + 2 power wires) go to the wheelbase, and this will also allow for modularity.
I decided to use a Seed XIAO RP2040 microcontroller since I won't need a lot of pins. I also chose it because it runs on 3.3V, so I won't have use a voltage divider so that I don't damage the wheelbase's MCU. It is also compact and will easily fit inside the wheel hub.
It will receive 5V from the wheelbase via the VBUS pin, so that voltage loss/instability won't really bother it.
I made this schematic on KiCad so that it looks more understandable, but I won't make a PCB for it.

Oussama NAOUAR
added to the journal ago
CAD Pt. 21 ; FINALLY !
11-01-2026
Yes, FINALLY !
This time, the 3D design is finished.


First, I found a way to attach the wheelbase to a table.
I will use these clamps I found on Aliexpress that can be screwed to the wheelbase on those bottom aluminium profiles.

I went on and made a sample part in Solidworks, added the screws, and since the screws will be sticking ou from the clamp, and may dent the table, I designed a 3D printed surface flattener to hide the screws.

Then I went to the steering wheel sub assembly and made and added the necessary screws.
I also added the screws needed for the quick release mechanism on the wheelbase side, and added a place for the hall effect sensor magnet on the shaft mount.
After all of that was done, and the design was finished, I went ahead and started preparing the design files for the Github repo.
I made a repo, and a local folder, within which I made sub folders for the different project parts.
I then started by placing the files I downloaded from Grabcad, and saved all of the parts I designed in the STEP format and placed them in my directory.
Oussama NAOUAR
added to the journal ago
CAD Pt. 20 ; Not the last part :/
10-01-2026
I really hoped to finish CAD today, but unfortunately, it didn't happen :/
This time, I added all of the screws (I really hope) needed to hold the wheelbase together.
And this took much longer than expected, so I couldn't really finish the screews needed in the steering wheel sub assembly.
I started by measuring the holes group by group, and measuring the clearance for each screw. Then I proceeded by making the screws (A model, without threads, rounded corners...) by referring to this table :

And finally, I placed all of the 50 screws in their designed places.

This step is very crucial as it will allow me to better understand my design. Not only that, but it also prepares it for the submission.
Oussama NAOUAR
added to the journal ago
CAD Pt. 19 ; Hall Effect Sensor Mount
08-01-2026
Deadline extension really made me very lazy to work.
Anyways, the last thing but one to do is to design the hall effect sensor mount.
At first, to remove design complications and the need for screws and nuts... I wanted to make a hall effect sensor mount that sticks up from the bottom cover.
I wanted to use the simple sensor on its own. No breakout board or anything.
I wanted to make a clamp style holder. Put a horizontal mount near the shaft mount, put the hall effect sensor on top of it and clamp it using another 3D Printed part and 2 screws.

When I got to this point, I realized that it is a rather dumb idea.
You see, the mount is very fragile. It is very long, which makes it really prone to breaking. And it it does, I'll have to print the entire bottom cover again, which is really a waste of money + making the entire project more difficult to maintain.
Instead, what I want to do, is make a mount that will be screwed on the left lower aluminium profile. And instead of using a simple sensor, I decided to use one with a breakout board, meaning an entire module similar to this one :

A module will enable me to fine tune the sensitivity of the sensor directly within the board itself. This is necessary since the sensitivity needs to be adjusted depending on the magnet's size, strength, distance between the magnet and the sensor... while testing.
Here is the mount I came up with :

Dimensions need to be corrected when I get my hands on the module, since I couldn't find that information online.
Here's how the hall effect sensor module will be mounted :

Oussama NAOUAR
added to the journal ago
CAD Pt. 18 ; Fixing mistakes
29-12-2025
After making the guides for the side panels yesterday and shutting off my pc, I kept thinking about the project in bed before sleeping. And I realized that what I did was possible in the design, but impossible to make IRL.
You see, to mount the back enclosure, you need to screw it from the inside of the wheelbase, behind the back panel.
And to do that, you need to have the panels removed to access the screws. So if I kept that design, then it would be impossible to either mount the back cover, or the side panels.
So I had o think about other solutions.
I didn't want to add screws on the outside as it will make the wheelbase uglier.
I thought about only modifying the top plate to have screws, and modify the back enclosure and panel to move screws to the top, but that will leave the back enclosure unsecured on the bottom.
I also wanted to make a sliding mechanism, where you mount the side panels like before, and then the back plate, then you put the endlosure slightly below its final position, and slide it upwards, to next secure it with screws on the top.
But that would really complicate things and it would require things to go below the PCB...
So I kept the sliding mechanism on the top and bottom panels, and modified the side panels to be mounted with screws.


This design will make it easier to access the parts on the front (motor, encoder, hall effect sensors...), and will alsomake access for the back cover very easy.
Good thing that it was only a small mistake to be corrected, so it didn't take much time since the previous design only took me 0.5h. But each day, I am more convinced that working with an enormous sleep debt is far from being right. It is not the first mistake I made because of it.
So if there is one piece of advice I could give, is sleep well. Taking a nap and delay work will give much better results than working with a lack of sleep. Even if time is pressing, working while feeling rested will be much quicker and more reliable.
Anyways, since I was pretty tired at this point, I decided to make the simplest thing left, which is a hole in the back panels to go through.

That's it for today.
Good thing that the deadline was extended, but I will try to get finished with CAD tomorrow.
Already 18 CAD journal entries and I still haven't finished yet.
The only things left are the hall effect sensor mount, and the table mount.
VROOOM 🚀
gave kudos to FFB simracing steering wheel ago
Wow, this is incredible. I have wanted to make this for a long time and didn't have the skills to make this. Its incredible to see someone else creating a project like this.
Oussama NAOUAR
added to the journal ago
CAD Pt.17 ; Small fixes
29-12-2025
After taking a closer look at the assembly, I realized that it is pretty far from being complete.
I am still missing :
- The table mount
- Mounting options for the side panels
- Hall effect sensor + magnet mounts
- Holes in the back panel for wires to go through to the controllers
And since it is very very early in the morning (or very late at night), I went with the 2nd option since it was pretty easy and won't take much time.
At first, when I first made the panels, I thought about mounting them with screws and nuts.
But I think that I got a better idea. What if I made some guides to go through the aluminium profiles' rails, and then the panels will be sandwiched between the front and back plates.
So that's what I exactly did. I sketched the guides directly in the assembly, and made 4 20mm guides for each rail using the linear pattern feature to make things quick.


Oussama NAOUAR
added to the journal ago
CAD Pt.16 ; Design complete ! (Well... almost)
28-12-2025
After a long break, I got back to work.
First of all, I modified the paddle's design I made before, to fit with the new design

I then got back the paddle holder (swing arm) to add place for the magnets.

Then I put everything into an assembly to see how it looks, and where I will place the endstop switch.

I later decided that I will put the switch on the back side of the assembly so that I will be more free for the dimensions and have more space for wiring.
And to do just that, I will need to make a small extension to the swing arm to avoid the magnet, and to benefit from the space between the top faces of the swing arm and the mount.

And to place the enstop switch, I made a rectangular hole with space for mounting screws.

As you can see, I made everything symetrical since on the left side, everything will be flipped.
Making a design for each side will increase the work, and may increase the cost too, since with my design, I removed more material from the mount than I added on the swing arm.
After that, I put the sub-assebly in the steering wheel's sub assembly, and added the endstop switch on each side.
After doing that, The paddle shifters stood out wider than the wheel itself (even when I drew a 330mm one). So I narrowed down the wheel hub.
I also closed the wheel hub on the back, and added a GX12 connector to connect it to the base.
Here is how the steering wheel sub-assembly turned out.

And finally, I inserted this sub-assembly to the big wheelbase assembly.

Now, all what's left is to make the table mount.
I really can't tell you how happy I got when I saw the whole design coming together !
Oussama NAOUAR
added to the journal ago
CAD Pt.15 ; Working on the wheel hub
28-12-2025
For testing purposes, I downloaded a 300mm steering wheel from Github to see how the hub will fit.
Even though I will be using a 330mm wheel, I downloaded a 300mm model to get some good margin for the fingers.
Here's how it turned out :

Pretty messed up, right ?
To fix it, I went through a lot of prototyping.
I moved the steering axis to the top to free up space for a microcontroller board below it.
I also had to sacrifice a button on each side on the bottom because I didn't have enough space.
And to get the buttons and their plates positioned right, all I did was testing and evaluating by eye.
And even after the modifications, the buttons were still very close to the wheel, not leaving a comfortable room for the fingers. So I had to make another spacer on the front of the front panel of the hub.

Here is how it turned out in the assembly

After getting the layout about right, I added some side wings on the front plate to mount the paddle shifters that I will design later.

With that done, I got on working on a new paddle shifter design. I didn't really want to use a pre-made design like I said before. I want the project to be 100% my creation.
I got inspired by this design :
https://youtu.be/rf8PqbjdBoI?si=zRmNwDc7QN1vpco3
I started working on the mount that will house magnets on both sides.


As you can see, I made a circular-shaped hole with a hole on each side for an axis, to have a swing arm between the magnets.

I stopped here for lunch unfortunately. I'll finish the design in the afternoon.
Oussama NAOUAR
added to the journal ago
CAD Pt.14 ; Installing the PCB
28-12-2025
Since it is almost 1AM, I didn't want to do a big step.
First of all, I modified the wheelbase's back plate to mount the PCB, according to the mounting holes I put earlier in my PCB Design.
Then I added some vents to help cool the motor and the ODESC board since it has a heatsink on the back.

Here is what the electronic's bay will look like :

After that, I got working on the back cover to add a space to mount a female USB-C connector.
From what I understood from the official WeAct STM32H7 schematics, the onboard USB-C connector only uses 2 data pins.

And that will enable me to use this type of female USB-C connectors, as it is very easy to mount.
https://ar.aliexpress.com/item/1005009695057393.html
And to connect the STM32 USB connector to the external one, I will be using a 90° short cable with a breakout board.
A 90° connector will be used since the PCB design made the STM32 board's connector very close to the JST connector next to it. And unfortunately that is the only layout option I see, that could keep the PCB's size smaller than 100*100mm.
So with that in mind, I followed the dimensions that the seller put in the listing, and made a mounting hole in the back cover.

Oussama NAOUAR
added to the journal ago
PCB Design Pt.3 ; PCB Routing Complete !
27-12-2025
This time, I went to finish with the PCB so that I could finish CAD once and for all.
Last time, I made the schematics, so today, all I had to do was the PCB layout and wiring.
I first placed the components as shown in the image below. I wanted the PCB to be as small as possible, and as easy to route as possible.

As you can see, to minimize routing complication, I put the ST-Link connector just above the SDIO header of the STM32 board, the power connector just besides the buck converters' inputs, the encoder resistors just above the header pins...
And since the STM32 board is going to sit on top of headers, I put the resistors under it to minimize space.

At this point in routing, I remembered that JLC PCB prices PCBs smaller than 100x100mm in size at $2. And when I measured the PCB, I found it bigger than 100x100mm, and that's excluding mounting holes.
So I did the layout again, and had to redo most of the routing.

At this point, I finished routing everything but the GND and 5V nets, as I planned to make copper fills for those.
I also added a 100x100mm cutout outline, and placed M3 mounting holes on each corner to mount it at the back of the wheelbase.
For the copper fills, I first started by making a GND plane at the back side, and that went flawlessly.
However, when I tried to make a 5V plane at the front side, I didn't find the option for that.
After asking ChatGPT, I apparently had to connect the 5V net to a power symbol in the schematics. So I did just that.

And finally, I made my copper fills.

Here is what the PCB will look like (just suppose that the STM32 board and PCB will be black :) ) :

Oussama NAOUAR
added to the journal ago
CAD Pt. 13 ; Wheel Hub Redesign
27-12-2025
Back to CAD again :)
At 12:30AM, I got the very bright decision to completely redesign the steering wheel hub !
I started doing some research regarding CNC cutting aluminium sheets, and it is pretty expensive, and useless to be honest.
So I decided to make the steering wheel hub entirely 3D-Printed.
And this time, I got inspired by Fanatec's Clubsport Universal Hub design.

So first of all, I started designing the face plate, with, just like Fanatec's hub, 4 triangles to hold 3 push buttons each. I made it triangular so that it fits well with the wheel, and kept a big hole for the quick release mechanism to go through, to the wheel itself.

Then I put it inside of an assembly, along with the buttons and the QR sample model to see how everything looks.

After that, I started designing the enclosure that will go behind that plate, and will house the wiring and paddle shifters, directly inside of the assembly.

Unfortunately, the thick enclusure walls meant that most of the quick release mechanism was going to be inside of that enclosure, and make it impossible to operate the mechanism. So I headed back to the front plate design, and made a built-in spacer that would push the quick release mechanism out of the enclosure, just enough so that it can be operated.


For now, I put an approximate spacer thickness since I don't know how thick the quick assembly mechanism really is, and how thick the enclosure will be. So once I finish the hub design, and get my hands on the mechanism, I would be able to insert the right dimensions.
Oussama NAOUAR
added to the journal ago
PCB Design Pt.2 ; The schematics
26-12-2025
First, I made the missing components for the pcb, the symbol + footprint.
The missing components were :
- 3P JST XH connector for the Hall Effect Sensor
- TJA1051 CAN Transceiver
- The buck converters (I will use 2 of the same model for both 5V and 12V outputs)
Next, after continuing to watch the tutorial series that I linked yesterday, I started looking for the cheapest PCB manufacturer that makes high quality PCB. And I chose JLC PCB as it was the cheapest of all, and had very good reviews and apparently a good build quality.
Then, by using the link provided in the video's description, I imported all of the settings and tolerences for JLCPCB machines to KiCad.
After that was done, I started making the schematics for the wheelbase's PCB.
First of all, I placed all of the components in a way that would make it more understandable for me to work on.
For the JST XH connectors, I used :
- 4 4-Pin connectors for the GX connectors on the wheelbase to connect the peripherals
- A 5-pin connector for the encoder
- A 3-pin connector for the hall effect sensor
- A 2-pin connector for the ODESC CAN input
- A 2-pin connector to power up the electronics from the main 36V power input
- A 2-pin connector to power up the fan from the 12V buck converter
- A 4-pin connector for the ST-Link programmer
I then renamed all of the components so that they make sense.
Then I connected all of the connectors 1st and 2nd pins to GND and +5V respectively, of the 5V buck converter's output.
Then, I wired up the TJA1051 module to a CAN port of the STM32H7 board by following the official datasheet.
Then I wired up all of the 4-pin connectors to different UART ports of the STM32 board, as these will be used to connect peripherals.
And finally, I connected the encoder to 3 timer pins of the STM32H7 board with a 510-Ohm resistor for each channel. I saw people doing that when using a 5V encoder with an STM32 board on VNM discord server, so I thought that it was to protect the 3.3V pins, so I added the resistors.
Here is how the schematics turned out :

Oussama NAOUAR
added to the journal ago
PCB Design Pt.1 ; First steps in KiCad :)
25-12-2025
This time, I decided to take a break from the 3D Design !
Remember when I said that a PCB isn't necessary because I only needed to wire 4 connectors ? Well it turned out that I was wrong.
After doing some more research on YouTube and the OpenFFBoard GitHub and Discord server, it turned that it is a bit more than just connectors.
For the electronics, I will be using the ODESC board as mentioned before. But on top of that, I will be using :
- An STM32H7 board to handle the game inputs
- A 12V regulator to power on the fan
- A 5V regulator to power the STM32 board along with providing power to the GX12 connectors
- A TJA1051 CAN transcoder so that the ODESC and STM32 board can communicate
- A hall effect sensor
So to keep things tidy and more reliable (as I always tend to make a mess when wiring up a lot of components manually), I decided to make a small PCB.
Before thinking about the wiring diagram, since I knew the components that I'll be using, I first chose my PCB editor : Altium Designer.
Why Altium ? Because it was the only software that had a STM32H7 board library available online.
And this is a very critical decision so that I don't have bad surprises when I make good progress later on.
At first, I thought that it would be pretty easy to get started, but then I found the software to be very complex, and not beginner friendly.
I started looking for alternatives that supported Altium libraries, and I found KiCad, so I downloaded it eventually. And believe me, the light theme and simple-looking interface really comforted my mind and brought me my motivation back.
To test it, I tried by importing the Altium Library. The import process was pretty easy, but I soon ran into issues.
The board was imported in 2 symbols, and the biggest and most important one isn't working at all. I couldn't place any wire. And when going to PCB editor, it automatically inserted two whole boards instead of one, and none of them was working.
And since I already apreciate the user-friendly interface, I decided to make my own symbol and footprint for the STM32H7 board.
I found this tutorial on YouTube, and slowly but surely, I started getting the hang of it.
https://youtu.be/OzF5vsgkLAY?si=zL08rsIuo40u2LD9
https://youtu.be/NiSkKemLK_8?si=Aa3ntH2me7qxCW7M
I followed the tutorial while following an image of the board online. I chose a generic board since I thought that they were the cheapest, and made the symbol accordingly. But when I checked on Aliexpress, these generic boards were cheap indeed, but shipping to Tunisia was very expensive. So I chose to make the WeAct board instead, since it was cheaper overall. So I saved it and kept it. Maybe I'll need it in the future, who knows !?
And fortunately, the corrupt library had the exact same symbol pin layout as the WeAct one, so it made it easier since I basically had to copy it. Here's what I made :

Next, is the footprint layout !
I downloaded the 3D STEP model from this Github
https://github.com/WeActStudio/MiniSTM32H7xx
And by taking measurements from the model in Solidworks, and following the tutorial above, here is what I came up with :

To connect components to this PCB, I chose to use some JST XH connectors. Essentially 2-pin, 4-pin and 5-pin variants.
I found the footprints in KiCad, but I could not find the symbols. So I made a symbol for each variant and linked it to its matching footprint.

Oussama NAOUAR
added to the journal ago
CAD Pt.12
24-12-2025
I know, CAD is taking very long, but we're very close :)
First of all, I modified all of the wheel hub parts so that they become modular and linked to eachother, so that when I edit one of them, I don't get errors, and every part get automatically rebuilt.
I did that by sketching the parts inside of the assembly.
Then, I added two joystick holes to the front plate
.
After that, I got to designing the magnetic paddle shifter assemblies.
I tried to do something very similar to what this guy did :
https://youtu.be/Fp4gQ_euMsg?si=-S9PfVIbnG-W44iQ
I started by making the paddle

Then I slowly made the other parts by myself, keeping in mind that guy's amazing work.
After that, I put everything into a new sub assembly.

Up until now, I thought that everything had been done properly. But that changed quickly when I tried putting the sub-assembly into the wheel hub sub-assembly.


Not only was the assembly designed backwards, meaning that to activate the switch you need to push the paddle, but the mounting holes were also wrongly placed in a way that they would hide behind the quick release mechanism.
It was very frustrating to see 2hrs of work lost. But it happens !
I think that I'll use the parts from the YouTube video, as fixing my model will take a lot of time.
He provided STL parts in the Google Drive linked in the description, as well as DXF files for the laser-cut parts, from which I will tzke dimensions to put on my design for the mounting holes.
Oussama NAOUAR
added to the journal ago
CAD Pt.11 ; Steering Wheel Hub
23-12-2025
Today, I decided to take a break from the wheelbase design, and start working on the wheel itself.
For a first wheel, I decided to make things pretty simple and reliable.
I decided to use a Momo steering wheel or similar, like the ones used in drift cars. I still didn't choose the model, but they all have the same 6-screw mounting system.
The wheel will also feature a quick release system.
I spent a lot of time on Aliexpress looking for a reliable and easy to mount quick release system.
A lot of them tricked me since they showed cheap prices at first, but they were all "Welcome deals".
The cheapest decent one that I found is this one.
https://ar.aliexpress.com/item/1005009121231549.html
And bonus : Someone already used it for a simracing setup in the reviews !
With that in mind, I went to design a shaft mount for this quick release module.

Next, I went on to design the hub that will be stuck to the steering wheel. This hub will contain all of the buttons, paddle shifters... and all of the wiring.
First, I designed the back plate that will be mounted to the QR mechanism.

There are 12 holes : 6 for the QR mechanism, and 6 to mount the front plate and the steering wheel.
Here is the front plate, that will house (for now, just as an alpha prototype version) 8 buttons.

The 2 plates will be spaced by about 3.5cm to make space for the wiring inside + paddle shifters mounted on the sides.
The 2 plates will be spaced by using screw spacers.
And to hide everything, I made this enclosure

Then, I made a small cylinder with approx dimensions as a sample for the quick release mechanism, just to tell that it's there.
And finally, I made everything into a sub-assembly :

Oussama NAOUAR
added to the journal ago
CAD Pt.10 ; Some vents + components placement
23-12-2025
I started by adding some vents on the sides, on both the front and back side panels.

Then, since I chose from the beginning, by watching similar setups online, to use ODESC as a control board for FFB, I downloaded this model from Grabcad to place it in the assembly and start making holes to mount each component. (By the way I'll go through the electronics soon, I just need to finish CAD first).
https://grabcad.com/library/odesc-v4-2-bldc-motor-driver-controller-1
The guy did a really good job at making a very detailed model. But unfortunately, my computer only has 8GB of ram, and an iGPU. So here is where the struggle begins :)
Immediately after adding the component to the assmebly to verify dimensions etc... everything started going very very slow on my computer. So from now on, everything I did later was really slow, including some modifications to the back panel to make mounting holes, and making the back enclosure a bit shorter.
But eventually, I placed it along with the included resistor. And I placed them on the far right to make them close to the power supply connector, and to take benefit of a maximum airflow coming from the vents to the fan.
Here is how it is mounted :

Oussama NAOUAR
added to the journal ago
CAD Pt.10 ; Electronics Enclosure
22-12-2025
This time, I made the enclosure for the electronics, that will be mounted at the back, behind the Aluminium back plate.
I used that amazing feature that allows you to design a part within the assembly, and it made my life a lot easier again :)
I first started by designing a very simple enclosure.
Then, I started thinking about the ports that I'll be using for future pedals, shifter, button box... connections.
At first, I thought about making a PCB with RJ45 ports, but then said that making a PCB just to add 4 connectors is really a loss.
So I started searching for available connectors at my local shops and stumbled upon these amazing GX12 connectors.

They directly mount onto the enclosure, so no need for a PCB, screws, whatsoever. I'll just need to solder wires, that's all.
I also decided to add a 120mm fan on the back to cool down the motor driver, and the motor too; that's why I chose a big fan.
And finally, I also decided to put an XT60 connector on the back to power everything on, as the power supply will be separate, so that the wheelbase doesn't get bulkier.

Oussama NAOUAR
added to the journal ago
Cad Pt.9
21-12-2025
1. Front Bearing
To finish with the front plate, I searched for 20mm bearings and found a model called UFL004.
This bearing has a way to mount it with screws to the front plate, thus without needing to make custom brackets...
So I designed a sample model without details, just the important dimensions

Then, I made holes accordingly in the front plate to house this bearing.
https://youtu.be/vjENDQarwxI?si=C9ZFouVhPo-rN4WJ
2. Back Plate
Nothing special here. Saved a copy of the front plate, removed the bearing holes, and added it to the assembly.
3. The enclosure
Since I'm now pretty confident that the front and back plate designs won't change, I made the external enclosure.
This enclosure will be printed in 4 separate parts : Left, Right, Upper, Lower enclosure, so I designed each part on its own to fit flush with the plates and aluminium profiles.
I also kept the bottom aluminium rails exposed since they will be used for the desk mount.
Since the front plate's sketch is very complicated, I tried looking for a way to make the part inside the assembly to make it easier. So this time, I sketched the enclosure parts directly inside of the assembly, thanks to this tutorial :
It is the first time that I make a part within the assembly in Solidworks. And this will certainly help me a lot in this project and in the future project.


Oussama NAOUAR
added to the journal ago
CAD Pt.8 ; Success in making the pulley
20-12-2025
The great thing about me is that I don't give up easily.
So after dinner, I kept looking for ways to make the pulley, and I found this tutorial uploaded by Solidworks :
https://youtu.be/rjmKaswKXUc?si=Y-1p3jga44CPzpXg
So I followed it and made my custom 120-tooth pulley that will be mounted on the back of the motor.

Next, I made a sample 30-tooth pulley to be mounted on the encoder to have a 4:1 ratio to have 4x the encoder resolution.

Next, I mounted everything in the assembly, and here's what it looks like now :

Oussama NAOUAR
added to the journal ago
CAD Pt.7 ; Failed pulley system redesign attempt
20-12-2025
As I said in my previous journal, I found a better way to mount the encoder, that will eliminate the need for a belt tensioner. I got inspired by this design on YouTube :
https://youtu.be/X-Dd3wjQ4uM?si=eNiLrp9AvPEiq4_C
Basically, the encoder is mounted on the back side of the motor, on the same rails as the motor mounting shafts. And this will allow the encoder to slide left and right to get the right amount of belt tension.
But this required a very big pulley that will be mounted on the back side of the motor rotor, and it had to be custom built.
I first made the new encoder mount that will also be 3D printed just like the older one.

Then I added it to the assembly, and everything was looking pretty nice at this point.

Now came the big motor pulley design. And I first thought that I would find ressources and standard dimensions like most normalized parts out there. But I really couldn't find any.
I tried copying the design mentioned earlier, but I couldn't get the STEP file to something that I can reliably get measurements from.
I tried following this YouTube Tutorial, https://youtu.be/6EBqo_BrOmA?si=bFQslmDhV668M_lL but the teeth came out really big, and I couldn't fit 120 teeth in a diameter smaller than the motor's.
So as of now, I think that I will keep the old design, make the wheelbase larger, and design a belt tensioner later.
Oussama NAOUAR
added to the journal ago
3D Design Pt. 6 ; A major redesign !
20-12-2025
Last time, I tried to replicate Moza's wheelbase design. But I went by mind, no visual reference, so I got it very wrong !
This time, I took a closer look at Moza's wheelbase design and got onto redesigning the entire face plate.
I also found a new way to mount the encoder without the need to use a belt tensioner, so this enabled me to make the wheelbase less wide. I didn't design the new encoder mount yet, but I started by removing the old one and narrowing the wheelbase.

Oussama NAOUAR
added to the journal ago
3D Design Pt.5
19-12-2025
Today, I made a very important step-up in the 3D Design.
1. Encoder Pulleys
Yesterday, I chose some pulleys with an 8mm bore diameter. I thought that I'll make a part of the shaft thinner using the lathe, but I didn't think about how I'm gonna slide the shaft pulley in its slot. So I had to look for pulleys with a much bigger bore, and unfortunately, these aren't available in Tunisia.
At first, I thought about building a pulley in the shaft mount which will be 3D Printed, but I didn't wanna rely on 3D Printing for precision. The whole point of the pulley setup is better resolution; 3D printing might ruin that.
After a lot of research, and trying to understand pulley names, I fould on Aliexpress a pulley with 20mm bore diameter. So I made a sample3D pulley in Solidworks to see how it will be mounted. I also switched to a 20mm shaft, which will be sturdier.
I also made a sample pulley design for the encoder.
Since the shaft pulley turned out to be bigger than expected, I made the wheelbase larger to make space for a pulley tensioner. I also slightly modified the encoder mount to sit slightly higher
2. External Design
I completely redesigned the front and back plates.

They are larger now, and feature a nice and dynamic design in my opinion.
I also adjusted the mounting holes positions to make space for the 3D-printed enclosure.
The top aluminium profiles are now mounted at an angle.

Oussama NAOUAR
added to the journal ago
3D Design Pt.4
18-12-2025
This time, I did some adjustments to what I did last time, and modeled 2 new components.
First of all, I had to find a way to mount the shaft onto the hoverboard motor.
I asked my mechanics teacher and he proposed to make a mount on a lathe using a thick tube (I forgot the material's name).
This part will then have 6 holes to mount it on the motor, and a hole to mount the shaft using a bushing. But the thickest diameter he had was only 50mm, and that is really thin, as we have to make the mounting holes as far appart as we can, to avoid drilling into the bearing inside the motor.
At first, I didn't want to use a 3D Printed part for the most critical component of this project. But then, I decided to make a thick part that will be printed in PETG with 100% Infill, and it should work just fine. I saw people doing the same thing, and they didn't have any problems.
So I hopped on Solidworks and drilled some holes on the motor model, and then designed the shaft mount.
At first, I put some approximate shaft dimensions since I didn't decide the shaft diameter.
I tried making it with the biggest fillet possible to make it as sturdy as it can be.
Then I went on the internet, and chose 16mm as shaft diameter, and asjusted the mount accordingly.

Then, I decided to use a traditional rotary encoder, unlike most people on the internet who used magnetic encoders, since it will reduce complication and eliminate the need to drill through the motor.
The encoder will be linked to the shaft using a belt and pulley setup.
I didn't find any good models online of the encoder, so I designed one myself following a datasheet on Aliexpress.

I then proceeded to make the encoder mount.
It took me a lot of prototyping. At first I made a model that should be mounted on the top side of the bottom aluminium profiles. But that would make the encoder really close to the shaft.
I didn't decide the pulleys that I'll be using so I wanted to space them apart, and make space for a belt tensioner.
So I made a mount that will stick from the side of the profile.

And finally, I went back on the internet to choose the pulleys. Since it was already very late at night, I left their 3D design for the next time.
Here's what I achieved up to this time.


Oussama NAOUAR
added to the journal ago
3D Design Pt.3
18-12-2025
Today, since I had 2hrs of free time at school, I decided to make some adjustments to my current 3D design.
First of all, I lowered the middle profile, the one to hold the motor on, to sit right between the bottom side profiles. This will make for a much sturdier mount with screws on the sides, instead of relying on friction generated by the nuts and L brackets.
But this made it mandatory to have a 3D Printed riser underneath the SK16 brackets.
I did a lot of experimenting to make the spacer as short as possible, but the minimum height I could go with was 23mm.
I also made the entire wheelbase height a bit smaller, to have the motor sticking out a bit on the upper side and have better aesthetics when designing the 3D Printed enclosure.
I also made the wheelbase much shorter, as I decided to make a 3D-printed enclosure to go on the back to house the electronics.
Up until now, my design is very inspired from this design made by "Orhan Kökbudak" on Grabcad :
https://grabcad.com/library/direct-drive-wheelbase-1
Here is my design up until now :


Of course the tire will be removed from the motor. It's just that I didn't find a way to do it on that specific STEP file :)
Now the next challenge is to find a way to mount the steering wheel shaft to the motor.
Oussama NAOUAR
added to the journal ago
3D Design Pt.2
17-12-2025
After I took a dinner break, I got back to CAD.
I changed the side aluminium profiles to 2020mm instead of 3030mm since they're a bit cheaper, and will make it easier to link them together using the L brackets. I also corrected the 20*40mm profile sketch.
After doing some research, I found that the most popular hoverboard motor size is 6.5 inches. So I went on Grabcad and imported a motor model.
After importing the motor, I designed the SK16 mounting bracket that I'll be using to secure the motor to the aluminium profile.

After doing the assembly, I noticed that the motor will sit a bit lower than the enclosure, so I needed to raise it.
I designed a riser to go between the middle profile and the SK16 brackets, but I didn't want to put a plastic part in the motor holding assembly. So I changed the bottom aluminium profiles to some 20*40mm to raise the motor higher, and therefore eliminate the need for a plastic riser.
I also squared up the front and back plates to make it easier to understand the dimensions.


Oussama NAOUAR
added to the journal ago
3D Design Pt.1
17-12-2025
Today, I started working on the 3D Design of the wheelbase.
To get some inspiration, I went on YouTube and watched a lot of different designs of wheelbases that used a hoverboard for FFB.
The simplest design is to use aluminium profiles for the frame and motor mounting. And to hold the steering wheel axis, I decided to go with 5mm cnc-cut aluminium sheets for the front and back plates. And for cool aesthetics, I will design some 3D-printed parts to complete the enclosure.
For today, I started by designing the 30*30mm aluminium profiles that will go on the sides between the front and back plates.


I then went on to design the front and back plates.

And after that, I designed the aluminium profile that would hold the hoverboard mounting brackets.

And finally, I put everything inside an assembly to start seeing what the wheelbase will look like.

Up until now, except for the aluminium profiles' sketches, every dimension is roughly entered, just to get a better idea of what the design will look like.
As I get further into the 3D design, and get a better overall idea about the project and components' dimensions, I will enter the right dimensions.
Oussama NAOUAR
started FFB simracing steering wheel ago
12/17/2025 - 3D Design Pt.1
17-12-2025
Today, I started working on the 3D Design of the wheelbase.
To get some inspiration, I went on YouTube and watched a lot of different designs of wheelbases that used a hoverboard for FFB.
The simplest design is to use aluminium profiles for the frame and motor mounting. And to hold the steering wheel axis, I decided to go with 5mm cnc-cut aluminium sheets for the front and back plates. And for cool aesthetics, I will design some 3D-printed parts to complete the enclosure.
For today, I started by designing the 30*30mm aluminium profiles that will go on the sides between the front and back plates.


I then went on to design the front and back plates.

And after that, I designed the aluminium profile that would hold the hoverboard mounting brackets.

And finally, I put everything inside an assembly to start seeing what the wheelbase will look like.

Up until now, except for the aluminium profiles' sketches, every dimension is roughly entered, just to get a better idea of what the design will look like.
As I get further into the 3D design, and get a better overall idea about the project and components' dimensions, I will enter the right dimensions.
12/18/2025 6:29 PM - 3D Design Pt.2
17-12-2025
After I took a dinner break, I got back to CAD.
I changed the side aluminium profiles to 2020mm instead of 3030mm since they're a bit cheaper, and will make it easier to link them together using the L brackets. I also corrected the 20*40mm profile sketch.
After doing some research, I found that the most popular hoverboard motor size is 6.5 inches. So I went on Grabcad and imported a motor model.
After importing the motor, I designed the SK16 mounting bracket that I'll be using to secure the motor to the aluminium profile.

After doing the assembly, I noticed that the motor will sit a bit lower than the enclosure, so I needed to raise it.
I designed a riser to go between the middle profile and the SK16 brackets, but I didn't want to put a plastic part in the motor holding assembly. So I changed the bottom aluminium profiles to some 20*40mm to raise the motor higher, and therefore eliminate the need for a plastic riser.
I also squared up the front and back plates to make it easier to understand the dimensions.


12/18/2025 6:49 PM - 3D Design Pt.3
18-12-2025
Today, since I had 2hrs of free time at school, I decided to make some adjustments to my current 3D design.
First of all, I lowered the middle profile, the one to hold the motor on, to sit right between the bottom side profiles. This will make for a much sturdier mount with screws on the sides, instead of relying on friction generated by the nuts and L brackets.
But this made it mandatory to have a 3D Printed riser underneath the SK16 brackets.
I did a lot of experimenting to make the spacer as short as possible, but the minimum height I could go with was 23mm.
I also made the entire wheelbase height a bit smaller, to have the motor sticking out a bit on the upper side and have better aesthetics when designing the 3D Printed enclosure.
I also made the wheelbase much shorter, as I decided to make a 3D-printed enclosure to go on the back to house the electronics.
Up until now, my design is very inspired from this design made by "Orhan Kökbudak" on Grabcad :
https://grabcad.com/library/direct-drive-wheelbase-1
Here is my design up until now :


Of course the tire will be removed from the motor. It's just that I didn't find a way to do it on that specific STEP file :)
Now the next challenge is to find a way to mount the steering wheel shaft to the motor.
12/19/2025 7 PM - 3D Design Pt.4
18-12-2025
This time, I did some adjustments to what I did last time, and modeled 2 new components.
First of all, I had to find a way to mount the shaft onto the hoverboard motor.
I asked my mechanics teacher and he proposed to make a mount on a lathe using a thick tube (I forgot the material's name).
This part will then have 6 holes to mount it on the motor, and a hole to mount the shaft using a bushing. But the thickest diameter he had was only 50mm, and that is really thin, as we have to make the mounting holes as far appart as we can, to avoid drilling into the bearing inside the motor.
At first, I didn't want to use a 3D Printed part for the most critical component of this project. But then, I decided to make a thick part that will be printed in PETG with 100% Infill, and it should work just fine. I saw people doing the same thing, and they didn't have any problems.
So I hopped on Solidworks and drilled some holes on the motor model, and then designed the shaft mount.
At first, I put some approximate shaft dimensions since I didn't decide the shaft diameter.
I tried making it with the biggest fillet possible to make it as sturdy as it can be.
Then I went on the internet, and chose 16mm as shaft diameter, and asjusted the mount accordingly.

Then, I decided to use a traditional rotary encoder, unlike most people on the internet who used magnetic encoders, since it will reduce complication and eliminate the need to drill through the motor.
The encoder will be linked to the shaft using a belt and pulley setup.
I didn't find any good models online of the encoder, so I designed one myself following a datasheet on Aliexpress.

I then proceeded to make the encoder mount.
It took me a lot of prototyping. At first I made a model that should be mounted on the top side of the bottom aluminium profiles. But that would make the encoder really close to the shaft.
I didn't decide the pulleys that I'll be using so I wanted to space them apart, and make space for a belt tensioner.
So I made a mount that will stick from the side of the profile.

And finally, I went back on the internet to choose the pulleys. Since it was already very late at night, I left their 3D design for the next time.
Here's what I achieved up to this time.


12/19/2025 10 PM - 3D Design Pt.5
19-12-2025
Today, I made a very important step-up in the 3D Design.
1. Encoder Pulleys
Yesterday, I chose some pulleys with an 8mm bore diameter. I thought that I'll make a part of the shaft thinner using the lathe, but I didn't think about how I'm gonna slide the shaft pulley in its slot. So I had to look for pulleys with a much bigger bore, and unfortunately, these aren't available in Tunisia.
At first, I thought about building a pulley in the shaft mount which will be 3D Printed, but I didn't wanna rely on 3D Printing for precision. The whole point of the pulley setup is better resolution; 3D printing might ruin that.
After a lot of research, and trying to understand pulley names, I fould on Aliexpress a pulley with 20mm bore diameter. So I made a sample3D pulley in Solidworks to see how it will be mounted. I also switched to a 20mm shaft, which will be sturdier.
I also made a sample pulley design for the encoder.
Since the shaft pulley turned out to be bigger than expected, I made the wheelbase larger to make space for a pulley tensioner. I also slightly modified the encoder mount to sit slightly higher
2. External Design
I completely redesigned the front and back plates.

They are larger now, and feature a nice and dynamic design in my opinion.
I also adjusted the mounting holes positions to make space for the 3D-printed enclosure.
The top aluminium profiles are now mounted at an angle.

12/20/2025 8 PM - 3D Design Pt. 6 ; A major redesign !
20-12-2025
Last time, I tried to replicate Moza's wheelbase design. But I went by mind, no visual reference, so I got it very wrong !
This time, I took a closer look at Moza's wheelbase design and got onto redesigning the entire face plate.
I also found a new way to mount the encoder without the need to use a belt tensioner, so this enabled me to make the wheelbase less wide. I didn't design the new encoder mount yet, but I started by removing the old one and narrowing the wheelbase.

12/20/2025 10 PM - CAD Pt.7 ; Failed pulley system redesign attempt
20-12-2025
As I said in my previous journal, I found a better way to mount the encoder, that will eliminate the need for a belt tensioner. I got inspired by this design on YouTube :
https://youtu.be/X-Dd3wjQ4uM?si=eNiLrp9AvPEiq4_C
Basically, the encoder is mounted on the back side of the motor, on the same rails as the motor mounting shafts. And this will allow the encoder to slide left and right to get the right amount of belt tension.
But this required a very big pulley that will be mounted on the back side of the motor rotor, and it had to be custom built.
I first made the new encoder mount that will also be 3D printed just like the older one.

Then I added it to the assembly, and everything was looking pretty nice at this point.

Now came the big motor pulley design. And I first thought that I would find ressources and standard dimensions like most normalized parts out there. But I really couldn't find any.
I tried copying the design mentioned earlier, but I couldn't get the STEP file to something that I can reliably get measurements from.
I tried following this YouTube Tutorial, https://youtu.be/6EBqo_BrOmA?si=bFQslmDhV668M_lL but the teeth came out really big, and I couldn't fit 120 teeth in a diameter smaller than the motor's.
So as of now, I think that I will keep the old design, make the wheelbase larger, and design a belt tensioner later.
12/21/2025 - CAD Pt.8 ; Success in making the pulley
20-12-2025
The great thing about me is that I don't give up easily.
So after dinner, I kept looking for ways to make the pulley, and I found this tutorial uploaded by Solidworks :
https://youtu.be/rjmKaswKXUc?si=Y-1p3jga44CPzpXg
So I followed it and made my custom 120-tooth pulley that will be mounted on the back of the motor.

Next, I made a sample 30-tooth pulley to be mounted on the encoder to have a 4:1 ratio to have 4x the encoder resolution.

Next, I mounted everything in the assembly, and here's what it looks like now :

12/22/2025 1 AM - Cad Pt.9
21-12-2025
1. Front Bearing
To finish with the front plate, I searched for 20mm bearings and found a model called UFL004.
This bearing has a way to mount it with screws to the front plate, thus without needing to make custom brackets...
So I designed a sample model without details, just the important dimensions

Then, I made holes accordingly in the front plate to house this bearing.
https://youtu.be/vjENDQarwxI?si=C9ZFouVhPo-rN4WJ
2. Back Plate
Nothing special here. Saved a copy of the front plate, removed the bearing holes, and added it to the assembly.
3. The enclosure
Since I'm now pretty confident that the front and back plate designs won't change, I made the external enclosure.
This enclosure will be printed in 4 separate parts : Left, Right, Upper, Lower enclosure, so I designed each part on its own to fit flush with the plates and aluminium profiles.
I also kept the bottom aluminium rails exposed since they will be used for the desk mount.
Since the front plate's sketch is very complicated, I tried looking for a way to make the part inside the assembly to make it easier. So this time, I sketched the enclosure parts directly inside of the assembly, thanks to this tutorial :
It is the first time that I make a part within the assembly in Solidworks. And this will certainly help me a lot in this project and in the future project.


12/22/2025 11 PM - CAD Pt.10 ; Electronics Enclosure
22-12-2025
This time, I made the enclosure for the electronics, that will be mounted at the back, behind the Aluminium back plate.
I used that amazing feature that allows you to design a part within the assembly, and it made my life a lot easier again :)
I first started by designing a very simple enclosure.
Then, I started thinking about the ports that I'll be using for future pedals, shifter, button box... connections.
At first, I thought about making a PCB with RJ45 ports, but then said that making a PCB just to add 4 connectors is really a loss.
So I started searching for available connectors at my local shops and stumbled upon these amazing GX12 connectors.

They directly mount onto the enclosure, so no need for a PCB, screws, whatsoever. I'll just need to solder wires, that's all.
I also decided to add a 120mm fan on the back to cool down the motor driver, and the motor too; that's why I chose a big fan.
And finally, I also decided to put an XT60 connector on the back to power everything on, as the power supply will be separate, so that the wheelbase doesn't get bulkier.

12/23/2025 - CAD Pt.10 ; Some vents + components placement
23-12-2025
I started by adding some vents on the sides, on both the front and back side panels.

Then, since I chose from the beginning, by watching similar setups online, to use ODESC as a control board for FFB, I downloaded this model from Grabcad to place it in the assembly and start making holes to mount each component. (By the way I'll go through the electronics soon, I just need to finish CAD first).
https://grabcad.com/library/odesc-v4-2-bldc-motor-driver-controller-1
The guy did a really good job at making a very detailed model. But unfortunately, my computer only has 8GB of ram, and an iGPU. So here is where the struggle begins :)
Immediately after adding the component to the assmebly to verify dimensions etc... everything started going very very slow on my computer. So from now on, everything I did later was really slow, including some modifications to the back panel to make mounting holes, and making the back enclosure a bit shorter.
But eventually, I placed it along with the included resistor. And I placed them on the far right to make them close to the power supply connector, and to take benefit of a maximum airflow coming from the vents to the fan.
Here is how it is mounted :

12/24/2025 2 AM - CAD Pt.11 ; Steering Wheel Hub
23-12-2025
Today, I decided to take a break from the wheelbase design, and start working on the wheel itself.
For a first wheel, I decided to make things pretty simple and reliable.
I decided to use a Momo steering wheel or similar, like the ones used in drift cars. I still didn't choose the model, but they all have the same 6-screw mounting system.
The wheel will also feature a quick release system.
I spent a lot of time on Aliexpress looking for a reliable and easy to mount quick release system.
A lot of them tricked me since they showed cheap prices at first, but they were all "Welcome deals".
The cheapest decent one that I found is this one.
https://ar.aliexpress.com/item/1005009121231549.html
And bonus : Someone already used it for a simracing setup in the reviews !
With that in mind, I went to design a shaft mount for this quick release module.

Next, I went on to design the hub that will be stuck to the steering wheel. This hub will contain all of the buttons, paddle shifters... and all of the wiring.
First, I designed the back plate that will be mounted to the QR mechanism.

There are 12 holes : 6 for the QR mechanism, and 6 to mount the front plate and the steering wheel.
Here is the front plate, that will house (for now, just as an alpha prototype version) 8 buttons.

The 2 plates will be spaced by about 3.5cm to make space for the wiring inside + paddle shifters mounted on the sides.
The 2 plates will be spaced by using screw spacers.
And to hide everything, I made this enclosure

Then, I made a small cylinder with approx dimensions as a sample for the quick release mechanism, just to tell that it's there.
And finally, I made everything into a sub-assembly :

12/24/2025 7 PM - CAD Pt.12
24-12-2025
I know, CAD is taking very long, but we're very close :)
First of all, I modified all of the wheel hub parts so that they become modular and linked to eachother, so that when I edit one of them, I don't get errors, and every part get automatically rebuilt.
I did that by sketching the parts inside of the assembly.
Then, I added two joystick holes to the front plate
.
After that, I got to designing the magnetic paddle shifter assemblies.
I tried to do something very similar to what this guy did :
https://youtu.be/Fp4gQ_euMsg?si=-S9PfVIbnG-W44iQ
I started by making the paddle

Then I slowly made the other parts by myself, keeping in mind that guy's amazing work.
After that, I put everything into a new sub assembly.

Up until now, I thought that everything had been done properly. But that changed quickly when I tried putting the sub-assembly into the wheel hub sub-assembly.


Not only was the assembly designed backwards, meaning that to activate the switch you need to push the paddle, but the mounting holes were also wrongly placed in a way that they would hide behind the quick release mechanism.
It was very frustrating to see 2hrs of work lost. But it happens !
I think that I'll use the parts from the YouTube video, as fixing my model will take a lot of time.
He provided STL parts in the Google Drive linked in the description, as well as DXF files for the laser-cut parts, from which I will tzke dimensions to put on my design for the mounting holes.
12/25/2025 - PCB Design Pt.1 ; First steps in KiCad :)
25-12-2025
This time, I decided to take a break from the 3D Design !
Remember when I said that a PCB isn't necessary because I only needed to wire 4 connectors ? Well it turned out that I was wrong.
After doing some more research on YouTube and the OpenFFBoard GitHub and Discord server, it turned that it is a bit more than just connectors.
For the electronics, I will be using the ODESC board as mentioned before. But on top of that, I will be using :
- An STM32H7 board to handle the game inputs
- A 12V regulator to power on the fan
- A 5V regulator to power the STM32 board along with providing power to the GX12 connectors
- A TJA1051 CAN transcoder so that the ODESC and STM32 board can communicate
- A hall effect sensor
So to keep things tidy and more reliable (as I always tend to make a mess when wiring up a lot of components manually), I decided to make a small PCB.
Before thinking about the wiring diagram, since I knew the components that I'll be using, I first chose my PCB editor : Altium Designer.
Why Altium ? Because it was the only software that had a STM32H7 board library available online.
And this is a very critical decision so that I don't have bad surprises when I make good progress later on.
At first, I thought that it would be pretty easy to get started, but then I found the software to be very complex, and not beginner friendly.
I started looking for alternatives that supported Altium libraries, and I found KiCad, so I downloaded it eventually. And believe me, the light theme and simple-looking interface really comforted my mind and brought me my motivation back.
To test it, I tried by importing the Altium Library. The import process was pretty easy, but I soon ran into issues.
The board was imported in 2 symbols, and the biggest and most important one isn't working at all. I couldn't place any wire. And when going to PCB editor, it automatically inserted two whole boards instead of one, and none of them was working.
And since I already apreciate the user-friendly interface, I decided to make my own symbol and footprint for the STM32H7 board.
I found this tutorial on YouTube, and slowly but surely, I started getting the hang of it.
https://youtu.be/OzF5vsgkLAY?si=zL08rsIuo40u2LD9
https://youtu.be/NiSkKemLK_8?si=Aa3ntH2me7qxCW7M
I followed the tutorial while following an image of the board online. I chose a generic board since I thought that they were the cheapest, and made the symbol accordingly. But when I checked on Aliexpress, these generic boards were cheap indeed, but shipping to Tunisia was very expensive. So I chose to make the WeAct board instead, since it was cheaper overall. So I saved it and kept it. Maybe I'll need it in the future, who knows !?
And fortunately, the corrupt library had the exact same symbol pin layout as the WeAct one, so it made it easier since I basically had to copy it. Here's what I made :

Next, is the footprint layout !
I downloaded the 3D STEP model from this Github
https://github.com/WeActStudio/MiniSTM32H7xx
And by taking measurements from the model in Solidworks, and following the tutorial above, here is what I came up with :

To connect components to this PCB, I chose to use some JST XH connectors. Essentially 2-pin, 4-pin and 5-pin variants.
I found the footprints in KiCad, but I could not find the symbols. So I made a symbol for each variant and linked it to its matching footprint.

12/26/2025 - PCB Design Pt.2 ; The schematics
26-12-2025
First, I made the missing components for the pcb, the symbol + footprint.
The missing components were :
- 3P JST XH connector for the Hall Effect Sensor
- TJA1051 CAN Transceiver
- The buck converters (I will use 2 of the same model for both 5V and 12V outputs)
Next, after continuing to watch the tutorial series that I linked yesterday, I started looking for the cheapest PCB manufacturer that makes high quality PCB. And I chose JLC PCB as it was the cheapest of all, and had very good reviews and apparently a good build quality.
Then, by using the link provided in the video's description, I imported all of the settings and tolerences for JLCPCB machines to KiCad.
After that was done, I started making the schematics for the wheelbase's PCB.
First of all, I placed all of the components in a way that would make it more understandable for me to work on.
For the JST XH connectors, I used :
- 4 4-Pin connectors for the GX connectors on the wheelbase to connect the peripherals
- A 5-pin connector for the encoder
- A 3-pin connector for the hall effect sensor
- A 2-pin connector for the ODESC CAN input
- A 2-pin connector to power up the electronics from the main 36V power input
- A 2-pin connector to power up the fan from the 12V buck converter
- A 4-pin connector for the ST-Link programmer
I then renamed all of the components so that they make sense.
Then I connected all of the connectors 1st and 2nd pins to GND and +5V respectively, of the 5V buck converter's output.
Then, I wired up the TJA1051 module to a CAN port of the STM32H7 board by following the official datasheet.
Then I wired up all of the 4-pin connectors to different UART ports of the STM32 board, as these will be used to connect peripherals.
And finally, I connected the encoder to 3 timer pins of the STM32H7 board with a 510-Ohm resistor for each channel. I saw people doing that when using a 5V encoder with an STM32 board on VNM discord server, so I thought that it was to protect the 3.3V pins, so I added the resistors.
Here is how the schematics turned out :

12/27/2025 2 AM - CAD Pt. 13 ; Wheel Hub Redesign
27-12-2025
Back to CAD again :)
At 12:30AM, I got the very bright decision to completely redesign the steering wheel hub !
I started doing some research regarding CNC cutting aluminium sheets, and it is pretty expensive, and useless to be honest.
So I decided to make the steering wheel hub entirely 3D-Printed.
And this time, I got inspired by Fanatec's Clubsport Universal Hub design.

So first of all, I started designing the face plate, with, just like Fanatec's hub, 4 triangles to hold 3 push buttons each. I made it triangular so that it fits well with the wheel, and kept a big hole for the quick release mechanism to go through, to the wheel itself.

Then I put it inside of an assembly, along with the buttons and the QR sample model to see how everything looks.

After that, I started designing the enclosure that will go behind that plate, and will house the wiring and paddle shifters, directly inside of the assembly.

Unfortunately, the thick enclusure walls meant that most of the quick release mechanism was going to be inside of that enclosure, and make it impossible to operate the mechanism. So I headed back to the front plate design, and made a built-in spacer that would push the quick release mechanism out of the enclosure, just enough so that it can be operated.


For now, I put an approximate spacer thickness since I don't know how thick the quick assembly mechanism really is, and how thick the enclosure will be. So once I finish the hub design, and get my hands on the mechanism, I would be able to insert the right dimensions.
12/27/2025 11 PM - PCB Design Pt.3 ; PCB Routing Complete !
27-12-2025
This time, I went to finish with the PCB so that I could finish CAD once and for all.
Last time, I made the schematics, so today, all I had to do was the PCB layout and wiring.
I first placed the components as shown in the image below. I wanted the PCB to be as small as possible, and as easy to route as possible.

As you can see, to minimize routing complication, I put the ST-Link connector just above the SDIO header of the STM32 board, the power connector just besides the buck converters' inputs, the encoder resistors just above the header pins...
And since the STM32 board is going to sit on top of headers, I put the resistors under it to minimize space.

At this point in routing, I remembered that JLC PCB prices PCBs smaller than 100x100mm in size at $2. And when I measured the PCB, I found it bigger than 100x100mm, and that's excluding mounting holes.
So I did the layout again, and had to redo most of the routing.

At this point, I finished routing everything but the GND and 5V nets, as I planned to make copper fills for those.
I also added a 100x100mm cutout outline, and placed M3 mounting holes on each corner to mount it at the back of the wheelbase.
For the copper fills, I first started by making a GND plane at the back side, and that went flawlessly.
However, when I tried to make a 5V plane at the front side, I didn't find the option for that.
After asking ChatGPT, I apparently had to connect the 5V net to a power symbol in the schematics. So I did just that.

And finally, I made my copper fills.

Here is what the PCB will look like (just suppose that the STM32 board and PCB will be black :) ) :

12/28/2025 1 AM - CAD Pt.14 ; Installing the PCB
28-12-2025
Since it is almost 1AM, I didn't want to do a big step.
First of all, I modified the wheelbase's back plate to mount the PCB, according to the mounting holes I put earlier in my PCB Design.
Then I added some vents to help cool the motor and the ODESC board since it has a heatsink on the back.

Here is what the electronic's bay will look like :

After that, I got working on the back cover to add a space to mount a female USB-C connector.
From what I understood from the official WeAct STM32H7 schematics, the onboard USB-C connector only uses 2 data pins.

And that will enable me to use this type of female USB-C connectors, as it is very easy to mount.
https://ar.aliexpress.com/item/1005009695057393.html
And to connect the STM32 USB connector to the external one, I will be using a 90° short cable with a breakout board.
A 90° connector will be used since the PCB design made the STM32 board's connector very close to the JST connector next to it. And unfortunately that is the only layout option I see, that could keep the PCB's size smaller than 100*100mm.
So with that in mind, I followed the dimensions that the seller put in the listing, and made a mounting hole in the back cover.

12/28/2025 8 PM - CAD Pt.15 ; Working on the wheel hub
28-12-2025
For testing purposes, I downloaded a 300mm steering wheel from Github to see how the hub will fit.
Even though I will be using a 330mm wheel, I downloaded a 300mm model to get some good margin for the fingers.
Here's how it turned out :

Pretty messed up, right ?
To fix it, I went through a lot of prototyping.
I moved the steering axis to the top to free up space for a microcontroller board below it.
I also had to sacrifice a button on each side on the bottom because I didn't have enough space.
And to get the buttons and their plates positioned right, all I did was testing and evaluating by eye.
And even after the modifications, the buttons were still very close to the wheel, not leaving a comfortable room for the fingers. So I had to make another spacer on the front of the front panel of the hub.

Here is how it turned out in the assembly

After getting the layout about right, I added some side wings on the front plate to mount the paddle shifters that I will design later.

With that done, I got on working on a new paddle shifter design. I didn't really want to use a pre-made design like I said before. I want the project to be 100% my creation.
I got inspired by this design :
https://youtu.be/rf8PqbjdBoI?si=zRmNwDc7QN1vpco3
I started working on the mount that will house magnets on both sides.


As you can see, I made a circular-shaped hole with a hole on each side for an axis, to have a swing arm between the magnets.

I stopped here for lunch unfortunately. I'll finish the design in the afternoon.
12/28/2025 9 PM - CAD Pt.16 ; Design complete ! (Well... almost)
28-12-2025
After a long break, I got back to work.
First of all, I modified the paddle's design I made before, to fit with the new design

I then got back the paddle holder (swing arm) to add place for the magnets.

Then I put everything into an assembly to see how it looks, and where I will place the endstop switch.

I later decided that I will put the switch on the back side of the assembly so that I will be more free for the dimensions and have more space for wiring.
And to do just that, I will need to make a small extension to the swing arm to avoid the magnet, and to benefit from the space between the top faces of the swing arm and the mount.

And to place the enstop switch, I made a rectangular hole with space for mounting screws.

As you can see, I made everything symetrical since on the left side, everything will be flipped.
Making a design for each side will increase the work, and may increase the cost too, since with my design, I removed more material from the mount than I added on the swing arm.
After that, I put the sub-assebly in the steering wheel's sub assembly, and added the endstop switch on each side.
After doing that, The paddle shifters stood out wider than the wheel itself (even when I drew a 330mm one). So I narrowed down the wheel hub.
I also closed the wheel hub on the back, and added a GX12 connector to connect it to the base.
Here is how the steering wheel sub-assembly turned out.

And finally, I inserted this sub-assembly to the big wheelbase assembly.

Now, all what's left is to make the table mount.
I really can't tell you how happy I got when I saw the whole design coming together !
12/29/2025 - CAD Pt.17 ; Small fixes
29-12-2025
After taking a closer look at the assembly, I realized that it is pretty far from being complete.
I am still missing :
- The table mount
- Mounting options for the side panels
- Hall effect sensor + magnet mounts
- Holes in the back panel for wires to go through to the controllers
And since it is very very early in the morning (or very late at night), I went with the 2nd option since it was pretty easy and won't take much time.
At first, when I first made the panels, I thought about mounting them with screws and nuts.
But I think that I got a better idea. What if I made some guides to go through the aluminium profiles' rails, and then the panels will be sandwiched between the front and back plates.
So that's what I exactly did. I sketched the guides directly in the assembly, and made 4 20mm guides for each rail using the linear pattern feature to make things quick.


12/30/2025 - CAD Pt. 18 ; Fixing mistakes
29-12-2025
After making the guides for the side panels yesterday and shutting off my pc, I kept thinking about the project in bed before sleeping. And I realized that what I did was possible in the design, but impossible to make IRL.
You see, to mount the back enclosure, you need to screw it from the inside of the wheelbase, behind the back panel.
And to do that, you need to have the panels removed to access the screws. So if I kept that design, then it would be impossible to either mount the back cover, or the side panels.
So I had o think about other solutions.
I didn't want to add screws on the outside as it will make the wheelbase uglier.
I thought about only modifying the top plate to have screws, and modify the back enclosure and panel to move screws to the top, but that will leave the back enclosure unsecured on the bottom.
I also wanted to make a sliding mechanism, where you mount the side panels like before, and then the back plate, then you put the endlosure slightly below its final position, and slide it upwards, to next secure it with screws on the top.
But that would really complicate things and it would require things to go below the PCB...
So I kept the sliding mechanism on the top and bottom panels, and modified the side panels to be mounted with screws.


This design will make it easier to access the parts on the front (motor, encoder, hall effect sensors...), and will alsomake access for the back cover very easy.
Good thing that it was only a small mistake to be corrected, so it didn't take much time since the previous design only took me 0.5h. But each day, I am more convinced that working with an enormous sleep debt is far from being right. It is not the first mistake I made because of it.
So if there is one piece of advice I could give, is sleep well. Taking a nap and delay work will give much better results than working with a lack of sleep. Even if time is pressing, working while feeling rested will be much quicker and more reliable.
Anyways, since I was pretty tired at this point, I decided to make the simplest thing left, which is a hole in the back panels to go through.

That's it for today.
Good thing that the deadline was extended, but I will try to get finished with CAD tomorrow.
Already 18 CAD journal entries and I still haven't finished yet.
The only things left are the hall effect sensor mount, and the table mount.
1/9/2026 - CAD Pt. 19 ; Hall Effect Sensor Mount
08-01-2026
Deadline extension really made me very lazy to work.
Anyways, the last thing but one to do is to design the hall effect sensor mount.
At first, to remove design complications and the need for screws and nuts... I wanted to make a hall effect sensor mount that sticks up from the bottom cover.
I wanted to use the simple sensor on its own. No breakout board or anything.
I wanted to make a clamp style holder. Put a horizontal mount near the shaft mount, put the hall effect sensor on top of it and clamp it using another 3D Printed part and 2 screws.

When I got to this point, I realized that it is a rather dumb idea.
You see, the mount is very fragile. It is very long, which makes it really prone to breaking. And it it does, I'll have to print the entire bottom cover again, which is really a waste of money + making the entire project more difficult to maintain.
Instead, what I want to do, is make a mount that will be screwed on the left lower aluminium profile. And instead of using a simple sensor, I decided to use one with a breakout board, meaning an entire module similar to this one :

A module will enable me to fine tune the sensitivity of the sensor directly within the board itself. This is necessary since the sensitivity needs to be adjusted depending on the magnet's size, strength, distance between the magnet and the sensor... while testing.
Here is the mount I came up with :

Dimensions need to be corrected when I get my hands on the module, since I couldn't find that information online.
Here's how the hall effect sensor module will be mounted :

1/11/2026 - CAD Pt. 20 ; Not the last part :/
10-01-2026
I really hoped to finish CAD today, but unfortunately, it didn't happen :/
This time, I added all of the screws (I really hope) needed to hold the wheelbase together.
And this took much longer than expected, so I couldn't really finish the screews needed in the steering wheel sub assembly.
I started by measuring the holes group by group, and measuring the clearance for each screw. Then I proceeded by making the screws (A model, without threads, rounded corners...) by referring to this table :

And finally, I placed all of the 50 screws in their designed places.

This step is very crucial as it will allow me to better understand my design. Not only that, but it also prepares it for the submission.
1/12/2026 - CAD Pt. 21 ; FINALLY !
11-01-2026
Yes, FINALLY !
This time, the 3D design is finished.


First, I found a way to attach the wheelbase to a table.
I will use these clamps I found on Aliexpress that can be screwed to the wheelbase on those bottom aluminium profiles.

I went on and made a sample part in Solidworks, added the screws, and since the screws will be sticking ou from the clamp, and may dent the table, I designed a 3D printed surface flattener to hide the screws.

Then I went to the steering wheel sub assembly and made and added the necessary screws.
I also added the screws needed for the quick release mechanism on the wheelbase side, and added a place for the hall effect sensor magnet on the shaft mount.
After all of that was done, and the design was finished, I went ahead and started preparing the design files for the Github repo.
I made a repo, and a local folder, within which I made sub folders for the different project parts.
I then started by placing the files I downloaded from Grabcad, and saved all of the parts I designed in the STEP format and placed them in my directory.
1/15/2026 - Wiring Diagrams
15-01-2025
Today, I made the wiring diagrams.
I downloaded some pictures of the multiple components used, and launched Freeform to make the diagrams.
First, I started by the wheelbase's diagram. It will show how components external to the PCB are connected.

I simplified this diagram when it comes to the encoders and GX12 connectors' connections, so that it doesn't look overwhelming. But here is how they will be connected :
For the GX12 connectors, they will be connected to a male JST-XH connector each, like shown below :

Same thing for the rotary encoder :

For the motor's encoder connector, I will have to check it when I buy it, since they usually differ from a model to another. So I might have to attach a new connector to the motor's encoder if the original one doesn't fit into the ODESC connector.
Now, time for the wheel's wiring diagram.
The steering wheel will also use a dedicate microcontroller, so that only 4 wires in total (2 signal wires + 2 power wires) go to the wheelbase, and this will also allow for modularity.
I decided to use a Seed XIAO RP2040 microcontroller since I won't need a lot of pins. I also chose it because it runs on 3.3V, so I won't have use a voltage divider so that I don't damage the wheelbase's MCU. It is also compact and will easily fit inside the wheel hub.
It will receive 5V from the wheelbase via the VBUS pin, so that voltage loss/instability won't really bother it.
I made this schematic on KiCad so that it looks more understandable, but I won't make a PCB for it.

1/16/2026 - Porting The Code Pt.1 ; Failed attempt
15-01-2026
Now that everything is finished, it was time to take care of the firmware.
I will use OpenFFBoard firmware available here :
https://github.com/Ultrawipf/OpenFFBoard/tree/master
It is an opensource firmware that is designed to handle the ODESC board.
The problem is that this firmware is now only compatible with 3 STM32F4 microcontroller models.
I used the STM32H743VIT6 in my wheelbase, so I have to port the code.
When I did my first research on Bing, the first thing that popped up is this YouTube video :
https://youtu.be/tURj2me-wxE?si=_crX2SMm3uQs-1Zu
At first, this seems like a very good tutorial, as it is apparently a stream replay, so no cuts whatsoever.
I started following the guide bit by bit, but soon started running into some issues.
Apparently STM32CubeIDE changed a lot in 4 years :/
The STM32 drivers package wasn't downloaded automatically, so I had to manually download it.
Also STM32CubeIDE didn't arrange the files like it did on the tutorial.
The tutorial seemed very based on the project he was working on, so he didn't really explain what should be done in general.
I tried fixing the files arrangement and everything, but I then found out that STM32CubeIDE didn't make a .ioc file.
I am very new to STM32Cube ecosystem, as I used to code in ArduinoIDE, so I made Bing and Google research along the tutorial. And apparently to configure FreeRTOS, I needed a .ioc file.
I tried outsmarting STM32CubeIDE :
- Made a blank .ioc file in the project directory, STM32CubeMX didn't recognize it :(
- Copied the original .ioc file from Github for the STM32F407VG board, and tried modifying all of the MCU ID, Model... in notepad. I thought that it will keep the same pin config... When I opened it, STM32CubeMX correctly showed the STM32H7 MCU that I was using, but also showed some errors, and purple pins that apparently meant that something is very wrong. Also some errors on the clock config popped up. Turns out these microcontrollers have very different architectures inside.

Since not everything was porperly kept/reset, and I did it the very hard and direct way, and it showed some errors when I first tried compiling the code, I decided to give up on this tutorial.
I tried looking for other solutions, till I found this one on the ST website.
I tried reproducing the same steps mentioned there.
The first attempt resulted in the process taking very long.
I stopped it, and restarted it again, same result.
I thought maybe because it is not the same STM32 family, so I tried with another F4 MCU, and it worked quickly.
I then tried disabling the CAN1 in the original project, since before trying to import it, it shows something related to CAN1.
I also restarted a new importation of the original firmware in parallel.
I tried leaving them work in the background and went on to work on the BOM (not logged into this journal time).
The original firmware finished importing, but showed some error messages.
The firmware without CAN1 still didn't finish.
I pressed OK on the project that finished importing, and STM32CubeMX again went to a new infinite loading time cycle.
I noticed that when I bring it back to the front of the desktop, fans ramp up, so I kept it there and went to prepare myself for bed.
When I opened task manager, I found it saying efficiency mode.
So what I did, was close the copy of the firmware without CAN1, and in the task manager, I set that process priority to realtime.
The system felt really sluggish afterwards, but it didn't matter.
I left it there until I finish my doomscrolling session.
And when I heard the PC fans get quieter, I jumped out of bed to save the project, and shut down the PC and sleep.
We'll see how everything goes afterwads.
I know, this entry is very long, but I tried logging my troubleshooting steps...
Note that only hand-on time working on the firmware is logged. BOM, doomscrolling, preparing for sleep isn't counted here :)
1/18/2026 12:03 AM - Porting The Code Pt.2 ; Success
16-01-2026
As soon as I got back home from school, I opened my computer, aiming to finally finish the project design to be able to submitt soon.
I opened STM32CubeIDE, and loaded the project that had "finished importing".
When I clicked on Generate Code, some errors popped up.
Slowly but surely, I tried fixing some by myself, while I got some help online for others.
The most important ones I think, are I2C and Timer configurations.
As I am very new to the STM32Cube environment, I struggled a bit, but then I finally was able to generate code.
But in contrast to what I inistially thought, Generate Code only imported the librairies initalized before when I imported the project, along with the pin, buses, and clock configurations.
But already getting all of the librairies and configuration included almost automatically is really nice.
And STM32CubeMX directed me to CubeIDE, so as I thought, a .ioc configuration file was really necessary.
Then I went to the original OpenFFBoard project directory, and tried manually importing and arranging files and folders.
After some time, I tried building the project, I got a bunch of red lines and errors in the console. But upon further inspection it turned out that STM32CubeIDE built all of the open projects at that time, so the errors were related to the first porting attempt I made before.
I closed that project, and tried building again, and SUCCESS !
The code compiled without errors !

After that was done, I proceeded to make the code for the Seed XIAO RP2040 board in Arduino IDE.
I made it in a way that it would only send the button data when a button changes state, so that it doesn't keep sending data and avoid inducing game input lag on the wheelbase's side.
That's it ! The final steps in making the project design is done !
CAD ✅
PCB ✅
Firmware ✅
All that was left to do is preparing the files needed in the Github repo.
And by the time of writing this journal entry, everything was done and added to the repo. Just missing some readme.md files in the sub directories.
PS : Time logged in this journal entry is only the time spent on the codes.
1/18/2026 12:40 AM - To sum up (+ banner picture)
18-01-2026

I really enjoyed working on this project.
It is a project that I have always dreamed of designing, and hopefully building after I get a grant.
The Blueprint program really motivated me to design this project, and convert my thoughts and ideas to files, and hopefully in the future, a real working system.
Along this 68-hour jouney, I was able to learn a lot of thins, among which was PCB design.
For this project, I designed my first ever PCB on KiCad, and got the occasion to learn how to make symbols and footprints.
This project also sharpened my skills in CAD, and made me use some features I never thought existed. And the thing I was most excited about, was to directly make and edit a new part inside of an assembly.
This project was also my entry gate to the STM32Cube environment. This really clarified the differences between STM32CubeIDE and STM32CubeMX, taught me a bit about MCU configuration...
And most importantly, working on this project late at night, really made me realize the importance of well resting and a good sleep schedule.
My PC, despite the pretty low specs, did a great job. It really struggled in the 3D design when it started coming up together, but I tried learning how to optimize ressources usage... I tried to model everything part of the design, and that would affect the design, but had to exclude some components that wouldn't affect the design.
I am really grateful and happy for what I was able to make and achieve. Making this project in less than a month, most of it (arount 55hrs) before the previous submission deadline was really challenging, especially considering that I was working on a HackPad, another project (the Amplifier model), and studying in parallel.
This really shows that when you put your mind and time into something, you are really beyond able to achieve it.