SaabCentral Forums banner
1 - 11 of 11 Posts

· Registered
Joined
·
8 Posts
Discussion Starter · #1 ·
Howdy folks!

With the awesome help of Seth over at http://bluesaab.blogspot.com/ I'm working on adapting his aux in / ipod arduino module into my 2004 9-5 Wagon with the Prestige audio system.

A bit of context: the module is a custom arduino / canbus board that ties into the CD changer harness where it hops on to the 2 wire can bus and power / signal to the head unit.

He's able to get his module to work with the code (on his site) in his 9-3 Viggen (pre 2003) but it doesn't quite work with my setup.

The following features work on his 9-3 and another pre 2003 9-5.
1) CD Changer s****
2) Analog audio into the head unit
3) Displays custom text on the SID
4) Maintains steering wheel track / volume control.

On my 2004 9-5 the following works
1) CD Changer s****
2) Analog audio

What's not working
3) Custom SID text flashes intermitently
4) Steering wheel controls are untested

What's really wrong
1) Airbag and warning MIL come on along with annoying tone when the device is plugged in regardless of source selection

His current code uses the original Canbus 8 bit communication and not the Canbus Extended 29 bit communication.

Here are the questions:
1) What did Saab change regarding the communications (Canbus, I-bus, P-bus) since the earlier 9-3 and 9-5's? I'm thinking the change was 2003-04 like many of the other revisions in the car.

2) What's a source of data on this??? WIS?
 

· Registered
Joined
·
64 Posts
I know this site is available;
http://pikkupossu.1g.fi/tomi/projects/i-bus/i-bus.html
And that's how I made the module I have now, but there isn't a site like that around for the newer cars ('03+).

It may just be a simple change to code/software that addresses the car in 29 bit CANBUS instead of the current 8 bit, I haven't tried yet.

Thanks :)
Seth
 

· Registered
Joined
·
21 Posts
2004 9-5 uses the same 11-bit (not 8-bit) Standard CAN ID-s as OG9-3. This is the same for all OG9-3-s and 9-5-s at least up to MY05, I don't know about 9-5 MY06 and after.
If that wasn't the case, you couldn't get any reaction from the radio or SID at all :)
Only difference between 9-3 and 9-5 appears to be the CDC communication, the latter needs one additional message on the bus to accept the fake CDC.
I know that because I've built a similar thing for my '04 9-5 (I've posted a link here before or you can find it in my sig) and that works just fine.
PS. The airbag and MIL lights sound awfully similar to problems some people were having with the Trollpod/Audiotroll several years ago.
 

· Registered
Joined
·
64 Posts
2004 9-5 uses the same 11-bit (not 8-bit) Standard CAN ID-s as OG9-3. This is the same for all OG9-3-s and 9-5-s at least up to MY05, I don't know about 9-5 MY06 and after.
If that wasn't the case, you couldn't get any reaction from the radio or SID at all :)
Only difference between 9-3 and 9-5 appears to be the CDC communication, the latter needs one additional message on the bus to accept the fake CDC.
I know that because I've built a similar thing for my '04 9-5 (I've posted a link here before or you can find it in my sig) and that works just fine.
PS. The airbag and MIL lights sound awfully similar to problems some people were having with the Trollpod/Audiotroll several years ago.
Yup; I've got the extra CDC command for the 9-5's and that works, at least in a 2000 and 2001 :) Do you know why the airbag & MIL lights turn on? I was assuming that the newer cars used newer CAN communication (29bit), yet would be backwards compatible with old cars (11bit). I also assumed that maybe the extra 18bits might've been throwing off the newer car because those 18bits would be random/null...? I haven't had a chance to try it out yet, but I was going to set those 18 remaining bits to all 0's and see if that did anything.

If you're right, I find it kind of odd that Saab never upgraded the CAN to extended...

Thanks for the input, though...any and all input is appreciated :)
Seth
 

· Registered
Joined
·
21 Posts
I've no idea why the airbag and MIL lights turn on. It would be good to see what Tech2 says about the fault condition that triggers the lights. My best guess would be that somehow the bus gets overloaded and some diagnostics communication can't get through on time, but that's just guessing. I've done some torture testing on the I-bus a while back and found certain conditions to cause MIU and SID to reset themselves, but I haven't seen airbag or MIL light up on my car.
As far as extended id's, it really makes no sense to upgrade just for the sake of using some newer spec. Unless you run out of ID's (there's 1024 standard ID's) all that gets you in this case is a waste of bandwith on already slow bus. There just isn't even close to that many components on the bus.
Setting the ext id bits to something in your code makes no difference, they don't ever reach the wire anyway.
 

· Registered
Joined
·
8 Posts
Discussion Starter · #6 ·
I've no idea why the airbag and MIL lights turn on. It would be good to see what Tech2 says about the fault condition that triggers the lights. My best guess would be that somehow the bus gets overloaded and some diagnostics communication can't get through on time, but that's just guessing. I've done some torture testing on the I-bus a while back and found certain conditions to cause MIU and SID to reset themselves, but I haven't seen airbag or MIL light up on my car.
As far as extended id's, it really makes no sense to upgrade just for the sake of using some newer spec. Unless you run out of ID's (there's 1024 standard ID's) all that gets you in this case is a waste of bandwith on already slow bus. There just isn't even close to that many components on the bus.
Setting the ext id bits to something in your code makes no difference, they don't ever reach the wire anyway.
I'll try to get to a shop who has a tech 2 and won't charge me $50 just to plug it in.

You spoke of the "extra CDC command," right now the command that's being used in the current code is:
int CDCcmd[] = {
0xE0,0x00,0x3F,0x31,0xFF,0xFF,0xFF,0xD0}; assuming this is for a 9-3
int ninefivecmd[] = {
0x62,0x00,0x00,0x16,0x01,0x02,0x00,0x00}; this is the 9-5 command

Do you know the command being sent for your 9-5?
 

· Registered
Joined
·
21 Posts
9-5 needs both messages. It seems (from Seth's blog, I haven't tried) that the 9-3 is happy with just the first one.
My emulator is using:
0xE0, 0x00, 0x3F, 0x41, 0x01, 0x01, 0x01, 0xD0 <-- this is sent periodically every 1 second with CAN ID 0x3C8
0x32, 0x00, 0x00, 0x16, 0x01, 0x02, 0x00, 0x00 <-- this is sent only as a response to received 0x6A1 message, sent with CAN ID 0x6A2

The trouble with the warning lights is most likely somewhere else, though. One thing to keep in mind is that any messages with the same ID must be at least 10 ms apart. I suggest you remove the beeps.
 

· Registered
Joined
·
8 Posts
Discussion Starter · #8 ·
9-5 needs both messages. It seems (from Seth's blog, I haven't tried) that the 9-3 is happy with just the first one.
My emulator is using:
0xE0, 0x00, 0x3F, 0x41, 0x01, 0x01, 0x01, 0xD0 <-- this is sent periodically every 1 second with CAN ID 0x3C8
0x32, 0x00, 0x00, 0x16, 0x01, 0x02, 0x00, 0x00 <-- this is sent only as a response to received 0x6A1 message, sent with CAN ID 0x6A2

The trouble with the warning lights is most likely somewhere else, though. One thing to keep in mind is that any messages with the same ID must be at least 10 ms apart. I suggest you remove the beeps.
That was it!!
Was: 0x64, 0x00, 0x00, 0x16, 0x01, 0x02, 0x00, 0x00

Should have been: 0x32, 0x00, 0x00, 0x16, 0x01, 0x02, 0x00, 0x00

No more airbag light!

Thanks to both you guys!
 
1 - 11 of 11 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top