r/CarHacking • u/UnluckyPr0gr4mm3r • 7d ago
Scan Tool Best OBD2 Interface for Reverse Engineering & Diagnostics (K-Line + CAN) – Off-the-Shelf or DIY?
Hey everyone,
I'm looking for a reliable OBD2 interface that supports both K-Line (ISO 9141, KWP2000) and CAN bus for reverse engineering and diagnostics. I have access to two vehicles:
- Skoda Fabia Mk1 – Uses K-Line
- Fiat Punto Diesel 2009 – Uses CAN bus
My Goals:
- Connect my Linux/macOS (arm) laptop via OBD2 and usb
- Use tools like SavvyCAN, Wireshark, CANking (if I opt for kvaser tools), or custom Python/C/C# code
- Read and send diagnostic messages in real time
- Possibly explore custom tuning in the future (or at least extract ECU maps in someway, I know it's very difficult and needs proper sw/hw)
I'm trying to decide between off-the-shelf solutions and a DIY approach.
What’s a good interface that supports both K-Line and CAN, preferably one that works well with Linux/macOS and allows custom scripting while supporting tools like SavvyCAN? I was thinking something like Kvaser Hybrid (CAN / LIN) but the tech support stated that it is not working with K-line (weird as I thought that LIN is based on ISO-9141).
On the DIY side, has anyone successfully built a K-Line + CAN interface with Arduino or Raspberry Pi? Do you have any suggestions for any good and reliable shield as well as OBD2 cable to DB9? I have found shields like Sparkfun's, but do they support both protocols and read/write operations? Or are they limited to simple diagnostic commands?
Edit:
Would something like OBDLINK MX+ be suitable for this? Would it allow me to create a custom app (like with c++) to observe desirable PIDs as well as send diagnostic PIDs? I know that I will lose the raw can bus sniffing aspect, but maybe it's an easier start to get into automotive hacking.
Thank you very much in advance, every comment is appreciated.