GhostBridge started because of a very specific problem.
I wanted an iPhone to communicate with a MicroSquirt ECU over RS232.
So for most of the project, I naturally thought of the hardware as an ECU interface.
That was the whole reason it existed.
But once the hardware, firmware, and GhostTune were all working together, I started looking at the bridge by itself instead of looking at the complete system.
And the obvious question hit me:
What part of this board actually knows there is an ECU connected to it?
The answer was basically none of it.
The ESP32 does not understand fuel tables.
The MAX3232 does not know what MS2/Extra is.
The DB9 certainly does not care.
At the hardware level, the bridge is really just:
WiFi/TCP → ESP32 → UART → MAX3232 → RS232
and the same path in reverse.
GhostTune is the part that understands the ECU protocol.
GhostBridge just moves the bytes.
That separation was something I had intentionally designed into the firmware, but I had never really thought through what it meant for the hardware itself.
It meant I had accidentally built something much more general than the original application.
If another device uses a compatible three-wire RS232 connection and the software on the other end can communicate over TCP, there is no fundamental reason the bridge has to care whether that device is an ECU, test instrument, old piece of equipment, embedded controller, or something else entirely.
That was a pretty interesting realization because the whole project had started in such a narrow automotive use case.
It also made me start thinking harder about the limitations of the first board.
GB-01 only routes:
TX
RX
Ground
That works for the application I originally built it for, but plenty of RS232 equipment also uses hardware flow control such as RTS and CTS.
So this is not some universal “plug it into anything with a DB9” device.
A DB9 connector does not even guarantee that the device is using RS232.
Pinout, electrical standard, baud rate, data format, flow control, and whether the equipment is wired as DTE or DCE still matter.
That became another rabbit hole.
The interesting part is that the MAX3232 I used already contains more than the one transmit and receive channel I am currently using.
So a future revision could potentially route another pair for RTS/CTS instead of changing the entire architecture.
That is one of those things that seems obvious after the fact.
Version one solved the problem I actually had.
Only after it worked did I start seeing all the problems it might solve next.
And that was probably the point where I stopped thinking of GhostBridge as just part of GhostTune and started thinking of it as its own piece of hardware.
Crux Resolve
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.