SavvyCAN UDS Scanner

I’ve recently posted a new version of the SavvyCAN binaries (found at

This version adds a lot of complication to the UDS scan window but now it works reasonably well. I’ve shot a video of me using a Macchina M2 with SavvyCAN to do UDS scanning on my 2008 Buick Enclave:

I’d be interested to hear about what sort of UDS modes other people’s cars support and what kind of fun things you can find by doing UDS scans on your car. Perhaps we can collaborate on doing some interesting things over UDS?

1 Like

wow!!! Awesome work…Ill definitely have to mess around with this tomorrow.

Is there a chance you’ve had some time to work on integrating SWCAN into SavvyCAN using the MCP2515 on the Macchina yet? :grin:

Hehe, funny you should mention that. Since UDS is working pretty well I went back to looking at M2RET to see how things were going with that. And, I’m currently looking at the SWCAN code. I probably won’t have anything ready tonight but Weds I will find myself with potentially a lot of time during the day so I will probably get it done then.


In case you are wondering, ladies and gentlemen, THIS is what a rock star developer looks like. Very impressive.

1 Like

Sounds good! Much appreciated all the work you’ve put into this.

Reverse-engineering the GM “common-architecture-1” cars/trucks is kinda my specialty (07-14 tahoe, suburban, silverado, 07-16 acadia/enclave/traverse, 06-13 Impala, 08-13 Caddy CTS, 08-17 express van, etc) so Im happy to do any beta testing…

The current Global-A architecture uses the same hardware-layer for 500k high speed and 33.3k low speed GMLAN as the older common-arch, but the function/arbitrary ID’s on single-wire low-speed CAN are different on Global-A. From the Global-A tinkering ive done, high speed 500k ID’s are basically the same as common-arch…but Global-A vehicles obviously have much more due to the increased feature subset/additional modules…

1 Like

I’ve pushed a new commit for M2RET that should enable SWCAN for both sending and receiving. It requires that you update the SW_CAN library from my repos too. I completely replaced that library with an interrupt driven library for better performance.

But, due to my current circumstances I was completely unable to test this on an actual single wire CAN bus so someone will have to give it a try and see what happens.

1 Like

Will try playing with the UDS scanner and the SWCAN on my '09 CTS and see how it looks.

Assuming this should work in SavvyCan

Awesome, thanks Collin!

Ill get my work bench all setup and try it out in a little bit,


I actually do not know if it will work in SavvyCAN or not. The code was always written assuming only two buses for a gvret or m2ret device. Swcan is a third one. So, I’m not sure what will happen. It should work but bus numbering could be weird and you’ll be unable to send to it. It should work through the serial console/lawicel2 interface including sending.

Would it be possible to get it to work with SavvyCAN?

I do not need to log three busses simultaneously (just one 500k high speed, and the low speed SWCAN), so if there was some way to simply just tell SavvyCAN to point to the MCP2515 instead of “internal/native CAN1” on the Due when it spits out data to SavvyCAN…that would be great.

I would think it would just require a tweaked M2RET sketch, and not any mods to SavvyCAN? Since we’d just be placing the received data from the MCP2515 out to “CAN1” on SavvyCAN…instead of actual “CAN1” data from the Due directly.

So if not compatible with SavvyCan how would one test it? Have to use something like Putty and connect to the serial port that the M2 is connected to?

I will probably be looking through your code Collin to learn how to interface into the M2 and such since this will be my first Arduino project. May help try to solidify the Canbus / SWCAN stuff if I can before diving into the J1850. we will see. I have some other technical issues I have to resolve before I can jump in. Hopefully will be ready in next week or two.

I cant get SavvyCAN v168 to work…it wont connect?

The device console says "got signal to update bauds. 1: -1073241824 2: 1073241824

And it wont connect at all.

Also it freezes/stops responding

the older version of M2RET, and SavvyCAN v157 work perfectly, I just tried reverting to them

Yeah, I just tried it and the problem seems to be that the M2RET firmware locks up now with the most recent changes. I’m back to being able to do some hardware testing so I’m looking into what is going on.

It appears the trouble is that I’ve already got the SDCard interface active and both the SDCard and the MCP2515 CAN module are on SPI0. So, they kind of fight over the SPI configuration. Arduino supports a solution to this but it’ll take some time to make the SWCAN library compliant. Look for a corrected version later tonight.

Hey Guys, one thing to note is that these boards should have the SD card connected to the processor via HSMCI interface. Connecting via SPI is still possible by placing R25, R26, R30 and R31 zero ohm jumpers, but these were left off for this beta production run. (and probably the next large run)

SD card on page 6 of the schematic here:

Oh, I could be wrong then. Perhaps I had just forgot to ever initialize SPI before and when I went back and added transaction support I also issued a call to SPI.begin… Whoops. Well, that kind of dumb stuff happens sometimes… At any rate, the SW_CAN library is updated as is M2RET and now you can start up SavvyCAN with the newest M2RET and it doesn’t crash. I still have yet to find an SWCAN source and test against it. Hopefully soon.

No worries man, double check to make sure those 0 ohm jumpers are not populated to be sure.

Also, I picked up one of these boards a while back. Not bad for a simulator really - decent software, relatively inexpensive. Here is a link, but there may be places to find it cheaper/faster shipping, etc:

OK that latest update fixed it, does not lock up anymore.

However the “overwrite mode” in SavvyCAN v168 still doesnt seem to work…when you click it, the logging slows immediately and then stops. If you click “clear frames”, it will clear the window, then reload the messages again for about 2 seconds, and stall again.

As soon as you uncheck “overwrite mode”, logging resumes.

The older SavvyCAN doesnt have this problem.

I wasnt able to get SWCAN to work in SavvyCAN…is there any documentation on how to use it just via a regular serial terminal?