# Information source on K CAN Bus ?



## BB_Mike (Jan 7, 2015)

I am wanting to determine the best way to "wakeup" the nodes on the k-can bus. also known as the k-bus which controls a lot of the cars interior items.

Specifically, I am putting newer BMW seats into an older car. The seats do nothing unless they have a sufficient k-bus signal on the CAN_high and CAN_low lines. (Orange and Orange w/ Green).


If you are still reading, here's the homework I have done so far:
The CAN transceiver is part number TJA1055 made by NXP semiconductor.
It has a "sleep mode" to prevent battery drain. When it get's a valide "T_dominant CAN signal", it enables the +5VDC regulator on the controller board, which in turn powers up the Freescale microcontroller and the LIN transceiver. The LIN is what communicates between the switch panel on the side of the seat and the microcontroller to make the seat move and function.
There is a "wake" pin on the TJA1055. I can force it to ground and the seat functions for 10 seconds, then it goes back to sleep and functions no more. that pin is edge triggered and I do not see a way to make it a permanent solution.

With a function generator I can send in a square wave that is: 10Vpp, 14kHz, 0 offset, 50% duty cycle.
This will "Wake up" the TJA1055 and the seats function fine for about 10-15 seconds. then they get a little unpredictable. Sometimes pushing a movement button does something, other times not. Almost like the garbage data I am sending the micro controller is causing it to enter a WTF mode and ignore LIN commands.

Seats are from a 2014 M6. 20-way adjustable, heated, cooled (ventilated), massaging. badass to say the least and are deserving of this level of effort I think.

My desire: to "record" the can bus from a local car that I have access too and then play that "idle" waveform back to the CAN bus lines. I am unsure if hackers of the k_bus can do this or not. From what I can tell, they mostly mess with radios and steering wheel information. I am willing to learn, I'm just looking for leads in the right direction and find out what's been done to date. Else, I'll have to start soldering to the control board and find a way to bypass the TJA1055 all together.


----------



## ap90500 (Oct 23, 2013)

K-bus aka K-line is used on older cars, it is a different thing than K-CAN. What is this older car? Are you trying to generate a correct signal to wake up seat modules? I mean are you generating signal, instead of using some programmable microcontroller that can be programmed to send CAN frames? I have done some CAN frame reading from my F30 and you need a specific frame that wakes up the seats (or any other module connected to the same bus). What are your requirements, do you only need to wake up the seat modules?

F30 wakeup (terminal status) frames:
ID: 0x0000012F, this wakes up at least NBT and ZBE on table

```
Frames:
"00 00 8a dd f1 15 30 02", engine running
"xx xx 8a dd f1 15 30 02", ignition on
xx = irrelevant, 00 is ok for this
```
This might also have other statuses, ie ACC, but I don't have them on my notes.

F30 another terminal status frame:
0x00000130, not sure if this wakes up anything, still it is broadcasted by FEM-module

```
00 f0 fc ff ff, power off
01 f0 fc ff ff, ACC aka radio on
05 f0 fc ff ff, ignition on
```
You can use at least Arduino Uno with CAN shield to make your own module, which starts to send this id 12F when it gets 15-wake up (constant +12v when ignition is on) from the car. KL15 is ignition on power terminal. There are also other options like Teensy, but I know nothing about these.


----------



## BB_Mike (Jan 7, 2015)

Receiving car is a 1960s BMW. So, no bus at all. Which means my solution will be an arduino with a CAN shield. Mostly because i want to grow the capability to send commands to turn the heat and ventilation feature on. I could hard wire those, but i am an engineer and this can bus stuff is exciting. I was hoping to build a quick square wave solution with a 555 timer to spoof the CAN transceiver into staying awake.

Is there a website with information for firmware that would go into the arduino for the protocols you listed above? All i know so far is what the schematics tell me and a few days of internet searching. Schematics do call it "KCAN" for the wires going to the seat control module. I am on my phone now. Will review your reply in more detail after a nights sleep.... sleep, i made a joke. Ha.


----------



## ap90500 (Oct 23, 2013)

Google for "arduino can shield" and you should get a link to seeedstudio wiki about the thing. There are analog inputs in arduino which you can use as an input for buttons. I received my arduino clone just this week and haven't had yet the time to test it. It took almost two months to arrive from China. Here is the link but this board usually censors links: http://www.seeedstudio.com/wiki/CAN-BUS_Shield

Wow, the link worked this time.

This is also a very handy tool:
http://www.ebay.com/itm/USB-CAN-USB...369?pt=LH_DefaultDomain_0&hash=item1c28418729
You can use it to read and send data from and to the bus. Also can be used to see what the arduino is sending. You need only one for this project, but if someone is using Arduino Due (which has two CAN bus connections) for CAN bus conversion or frame filtering, it would be wise to buy two of these so both sides can be monitored.

Then you will need ISTA Rheingold to get wiring diagrams. edit. It seems that you already have the diagrams.


----------



## BB_Mike (Jan 7, 2015)

Thanks. Is there a location where people share frame packet information like you have above in your first post?


----------



## ap90500 (Oct 23, 2013)

Not that I know. I have found these by myself.


----------



## BB_Mike (Jan 7, 2015)

I have read that there are similarities between i bus and k bus. This website proved useful to me:
http://www.reslers.de/IBUS/index.html


----------



## ap90500 (Oct 23, 2013)

Yes, i-bus and k-bus are actually the same protocol. Still K-CAN has nothing to do with k-bus. You should really forget the k-bus, as your seats are using K-CAN. K-bus was used on older chassis models like E46 and E39.


----------



## BB_Mike (Jan 7, 2015)

Ok. Thanks for that clarification. Yes, the schematic sheets do read "K CAN".


----------



## cederron (May 5, 2016)

ap90500 said:


> Yes, i-bus and k-bus are actually the same protocol. Still K-CAN has nothing to do with k-bus. You should really forget the k-bus, as your seats are using K-CAN. K-bus was used on older chassis models like E46 and E39.


That's not true.
My F33 is full of LIN Buses (aka i-bus/k-bus).
There is one from the radio/climate control panel to the IHKA, seats also have a LIN Bus, and much more.


----------



## yurikus (Jul 13, 2010)

BB_Mike said:


> Ok. Thanks for that clarification. Yes, the schematic sheets do read "K CAN".


Hi Mike, were you able to revive the seat? I have an F10 M5 seat without the car and in a similar situation.


----------



## charlesrg (Nov 10, 2020)

Wondering if @BB_Mike or @yurikus got able to resolve this, got the seats as well and not able to control them. Also installing them on an old vehicle.


----------



## charlesrg (Nov 10, 2020)

ap90500 said:


> K-bus aka K-line is used on older cars, it is a different thing than K-CAN. What is this older car? Are you trying to generate a correct signal to wake up seat modules? I mean are you generating signal, instead of using some programmable microcontroller that can be programmed to send CAN frames? I have done some CAN frame reading from my F30 and you need a specific frame that wakes up the seats (or any other module connected to the same bus). What are your requirements, do you only need to wake up the seat modules?
> 
> F30 wakeup (terminal status) frames:
> ID: 0x0000012F, this wakes up at least NBT and ZBE on table
> ...


I've an ESP32 similar to an arduino but with WIFI, plugged to the F30/F32 seat module Can bus similar to @BB_Mike . The seats don't need anything to wake up. Once the bus is on they automatically turn on. No messages needed to be sent.

I'm wondering how do I get the 'M' button to wake up. It must be waiting for the status of ignition I guess it will only work with ignition on but not running. 
I can read the messages when I press the '1' and '2' buttons.

Have you heard of turning on the 'M' button or turning on/off the seat heater ?


----------



## charlesrg (Nov 10, 2020)

charlesrg said:


> I've an ESP32 similar to an arduino but with WIFI, plugged to the F30/F32 seat module Can bus similar to @BB_Mike . The seats don't need anything to wake up. Once the bus is on they automatically turn on. No messages needed to be sent.
> 
> I'm wondering how do I get the 'M' button to wake up. It must be waiting for the status of ignition I guess it will only work with ignition on but not running.
> I can read the messages when I press the '1' and '2' buttons.
> ...


Here is a picture of the Can bus board to make the seats always awake. Components are about $20. ESP32 has built in wifi for future heat and memory fixes.


----------



## ckasinski (Jun 13, 2019)

charlesrg said:


> Here is a picture of the Can bus board to make the seats always awake. Components are about $20. ESP32 has built in wifi for future heat and memory fixes.



I have a set of multifunction seats from F01 that I’m trying to swap into a non-CAN BUS vehicle but haven’t been able to get the seat control modules to wake up. This may finally be the ticket so I can be don’t with this project. 

I bought an Arduino UNO to try to wake up via the regulated 5v line on ORG / GRN and GRN on GRD. 

I see you are running CAN-H / CAN-L to YLW/RD and YLW/BRN.


Do you have any other details on that ESP32 CAN bus Board so I can try replicating your process?


----------



## charlesrg (Nov 10, 2020)

ckasinski said:


> I have a set of multifunction seats from F01 that I’m trying to swap into a non-CAN BUS vehicle but haven’t been able to get the seat control modules to wake up. This may finally be the ticket so I can be don’t with this project.
> 
> I bought an Arduino UNO to try to wake up via the regulated 5v line on ORG / GRN and GRN on GRD.
> 
> ...


The ESP32 wiring to the








I'm using the same wiring as above. There are many other options for CAN ICs, I've tested with the sn65hvd230 but I've other similar and they should all work the same.
The ESP32 handles the low lever logic it has a Can Controller built in.





Amazon.com: Waveshare SN65HVD230 CAN Board Connecting MCUs to CAN Network Features ESD Protection Communication Evaluation Development Board 3.3V: Computers & Accessories


Amazon.com: Waveshare SN65HVD230 CAN Board Connecting MCUs to CAN Network Features ESD Protection Communication Evaluation Development Board 3.3V: Computers & Accessories



www.amazon.com





Here is the code to wake up the seats:








arduino-CAN/CANSender.ino at master · sandeepmistry/arduino-CAN


An Arduino library for sending and receiving data using CAN bus. - arduino-CAN/CANSender.ino at master · sandeepmistry/arduino-CAN




github.com





I'm using this to regulate the power. As you can see the board has 3 components. ESP32 + Power board + Can board.

Use the ESP32 instead of the Arduino. The built in WIFI can be used for OTA updates so no more going under the seat to program it.


----------



## ckasinski (Jun 13, 2019)

charlesrg said:


> The ESP32 wiring to the
> View attachment 1023559
> 
> I'm using the same wiring as above. There are many other options for CAN ICs, I've tested with the sn65hvd230 but I've other similar and they should all work the same.
> ...


👍🏻 I just ordered all three components. I have a few breadboards on hand and a 12v supply for testing.
Looks like mine wires were KCAN and the YLW/RD and YLW/GRN are KCAN2. 

thanks for sharing. I’ve been looking for info like this for months so thank you. I was about ready to deprecate this project but was thinking of re-programming switch cluster to arduino with relays. 
This is a muchhhhhh better method. 

Parts arrive EOW so I’ll report back next weekend.


----------



## Mzal (Feb 16, 2021)

Here is the code to wake up the seats:








arduino-CAN/CANSender.ino at master · sandeepmistry/arduino-CAN


An Arduino library for sending and receiving data using CAN bus. - arduino-CAN/CANSender.ino at master · sandeepmistry/arduino-CAN




github.com







Hi, do you can write me used CAN bus speed. I have on bench similar seats from Fxx . ID129 / 00 00 8a dd f1 15 30 02 and similar from post #2  not work me ( i try 100k and 500k CAN bus speed ). I have CAN Hacker for test..... I connect ( i have wiring ) GND, 12V (30), 12V (15), K CAN L + H. Without wake up CAN msg canot work with seats on bench.


----------



## charlesrg (Nov 10, 2020)

Mzal said:


> Here is the code to wake up the seats:
> 
> 
> 
> ...


It's 500K you can just run the code I referred above and it will work. Make sure you can read from the can bus, when you press the buttons Memory you should see Can Bus messages, if you're not reading from the bus you have a problem. 
I had issues that I couldn't read from the bus due to a deffective Can bus module I ordered on Amazon. Got it replaced and worked well.


----------



## charlesrg (Nov 10, 2020)

You can get one of this, you can test it with loopback mode and you should be able to read data when you press the 1 and 2 buttons.


----------



## Mzal (Feb 16, 2021)

charlesrg said:


> It's 500K you can just run the code I referred above and it will work. Make sure you can read from the can bus, when you press the buttons Memory you should see Can Bus messages, if you're not reading from the bus you have a problem.
> I had issues that I couldn't read from the bus due to a deffective Can bus module I ordered on Amazon. Got it replaced and worked well.


In ecu is TJA1055 = this is transmitter up to 125kbd . In BMW datasheet is K-CAN for seats 100kbd. If sending any data with 100kbd, some times can move with seats, but is not periodically. No data flows when the button is pressed. But if the ecu of the seat is in sleep mode, the buttons may not respond. I do not know. I have CAN bus Analyzer manual – CAN-Hacker is good for monitor CAN and sending msg. Ecu is same like K-CAN1 - wakeup front seats


----------



## Mzal (Feb 16, 2021)

And i check data on bus with oscilloscope , and no data on bus if press any buttons. Can bus TJA1055 is in sleep mode. I'll have to get a car, and save the communication.


----------



## charlesrg (Nov 10, 2020)

Mzal said:


> And i check data on bus with oscilloscope , and no data on bus if press any buttons. Can bus TJA1055 is in sleep mode. I'll have to get a car, and save the communication.


The seat will go to sleep mode in about 5 seconds after powering on.
You can see 700ma when on, and when it goes to sleep it reduces to less than 1ma. 
If you send a Can Bus message it will wake it up. 
Try turning it on and pressing 1 and 2 buttons , they will send you messages.
Here is an example with F32 seats and the can bus analyzer. The Receive is the button 2 press.


----------



## Mzal (Feb 16, 2021)

charlesrg said:


> The seat will go to sleep mode in about 5 seconds after powering on.
> You can see 700ma when on, and when it goes to sleep it reduces to less than 1ma.
> If you send a Can Bus message it will wake it up.
> Try turning it on and pressing 1 and 2 buttons , they will send you messages.
> ...


Your ecu must be different, i have ecu with TJA1055, this canot use 500kb like your. I have uder seat in connector 1,15 =12V , 16 = GND, 5=K_CAN L , 6=K_CAN H. CAN go fast to sleep mode, is true ( CAN voltage is in sleep mode , this see with oscilloscope). But wake up after pressing buttons not work here, this I see on oscilloscope. I will check it on car....


----------



## charlesrg (Nov 10, 2020)

Mzal said:


> Your ecu must be different, i have ecu with TJA1055, this canot use 500kb like your. I have uder seat in connector 1,15 =12V , 16 = GND, 5=K_CAN L , 6=K_CAN H. CAN go fast to sleep mode, is true ( CAN voltage is in sleep mode , this see with oscilloscope). But wake up after pressing buttons not work here, this I see on oscilloscope. I will check it on car....


It won't wake up when buttons are pressed, otherwise there would be no need for CAN to wake them up. You need to cut power and let internal capacitors drain..


----------



## Archangel_DT (Feb 18, 2021)

Definitely following this development. Picked up an E65 passenger seat for home use and would like to know how to make it work. Not necessarily too concerned about memory features, but heating and cooling would be a bonus.


----------



## Mzal (Feb 16, 2021)

Archangel_DT said:


> Definitely following this development. Picked up an E65 passenger seat for home use and would like to know how to make it work. Not necessarily too concerned about memory features, but heating and cooling would be a bonus.


Buy CAN scanner anf find CAN data for activate cooling and heating msg on CAN. Then buy arduino with CAN shield and make program for activate seat + control cooling/heating.... I will make same thing now..... I buy CAN-Hacker for this... Or must wait, and i will sen you my black box, after do it. Today i will have here car for scan E6x CAN for seat.... Then will test it on my seat.


----------



## Archangel_DT (Feb 18, 2021)

I pulled mine out of a junked car, so I have the controls, the board the controls plug into, and the cut wire harnesses from the seat to the rest of the car as well as the board going out. I don't have the CAS with me. I can go back to pull it if I need to.


----------



## alxvry (May 13, 2010)

Digging this post and the engineering being done! Now if I can only figure out why my car won't go into sleep mode.


----------



## ckasinski (Jun 13, 2019)

Whoo, keep hacking! 

I did receive my ESP32 and CAN but not the 3.3v Buck Converter so I'm still waiting. ESP32 has been flashed but don't have system power setup yet.


----------



## Archangel_DT (Feb 18, 2021)

What I'm trying to figure out is what I need to make the components I've got work properly. I have the seat controls, the BZM, and the seat with all computers connected underneath. There was only one cable bundle that came off the seat (that wasn't related to airbag stuff) and I pulled a lot of that wiring as well. The BZM only has 4 wires that come off it: a brown with black stripe, a paired green and green with orange stripe set of wires, and a red with black stripe. The wire bundle for the chair has the same brown wire with black stripe, a paired blue and blue with red stripe set of wires, and a thick brown wire plus a thick red wire with yellow stripe. What I'm trying to figure out is if I can provide power to the BZM and have it send the signals from the seat controls to the chair without needing any of the extra computer stuff other than power. ...and if so, what's the voltage requirements for the wires? Do I need the CAS to send an ignition or on signal? 

I'm not worried about acquiring more parts since it's a junked car and this is for home use anyway. I just need to know how to arrange the voltage and signal wires to make it work. I can build the framework around the chair in any way I need to accommodate any extra parts.


----------



## ckasinski (Jun 13, 2019)

No luck so far for me in wake up my seat modules to get seats to move at all. I have TJA1020 LIN modules. 


I tried sending the 'hello world' packet from github to wake up the module. No luck.
I tried modifying to codes to those that I found on Loopybunny (not sure if correct format to sending these codes, though) see below

I found this other poster that is facing same issue: Post



I have F-series seats so I believe they are at 500kpbs (K-CAN 2 speed).


Serial.print("Sending packet ... ");

CAN.beginPacket(0x130); //can ID
CAN.write(0x45); //45 engine running. (also key to position 2)
CAN.write(0x40); //key in slot
CAN.write(0x21); // clutch released and running
CAN.write(0x8F); // running
CAN.write(0xFE); // 
CAN.endPacket();

Serial.println("done");


----------



## charlesrg (Nov 10, 2020)

ckasinski said:


> No luck so far for me in wake up my seat modules to get seats to move at all. I have TJA1020 LIN modules.
> 
> 
> I tried sending the 'hello world' packet from github to wake up the module. No luck.
> ...


First try to read the bus, you should see messages when you press the M1, M2 buttons before the seats to go sleep (press them as soon as they are powered on). Then after you see messages you will know you have the correct data speed and then can trasmit.
When I had issues my Can Receiver was not working. What are you using to read the messages ?


----------



## charlesrg (Nov 10, 2020)

Archangel_DT said:


> What I'm trying to figure out is what I need to make the components I've got work properly. I have the seat controls, the BZM, and the seat with all computers connected underneath. There was only one cable bundle that came off the seat (that wasn't related to airbag stuff) and I pulled a lot of that wiring as well. The BZM only has 4 wires that come off it: a brown with black stripe, a paired green and green with orange stripe set of wires, and a red with black stripe. The wire bundle for the chair has the same brown wire with black stripe, a paired blue and blue with red stripe set of wires, and a thick brown wire plus a thick red wire with yellow stripe. What I'm trying to figure out is if I can provide power to the BZM and have it send the signals from the seat controls to the chair without needing any of the extra computer stuff other than power. ...and if so, what's the voltage requirements for the wires? Do I need the CAS to send an ignition or on signal?
> 
> I'm not worried about acquiring more parts since it's a junked car and this is for home use anyway. I just need to know how to arrange the voltage and signal wires to make it work. I can build the framework around the chair in any way I need to accommodate any extra parts.


Just wire your stuff to Can High and Can low and send a message periodically then you should be set for seat controls. Without Memory function.


----------



## Mzal (Feb 16, 2021)

ckasinski said:


> No luck so far for me in wake up my seat modules to get seats to move at all. I have TJA1020 LIN modules.
> 
> 
> I tried sending the 'hello world' packet from github to wake up the module. No luck.
> ...


On F is for seat module K CAN 100kbps


----------



## Archangel_DT (Feb 18, 2021)

charlesrg said:


> Just wire your stuff to Can High and Can low and send a message periodically then you should be set for seat controls. Without Memory function.


Works for about 15 seconds and then power shuts off. Takes a while to reset the system, so I need something to at least give it the right signal to stay on.


----------



## Archangel_DT (Feb 18, 2021)

According to this site it looks like their device emulates the ignition on, DRL on, and doors open (perhaps unlocked?) signals from the CAS in order to make the seats work. Is anyone able to grab these signals to throw into the Arduino or equivalent device?

Also, here's their documentation for installing their device.


----------



## charlesrg (Nov 10, 2020)

Archangel_DT said:


> According to this site it looks like their device emulates the ignition on, DRL on, and doors open (perhaps unlocked?) signals from the CAS in order to make the seats work. Is anyone able to grab these signals to throw into the Arduino or equivalent device?
> 
> Also, here's their documentation for installing their device.


ON F32 seats you don't need any special code to keep the seats awake, you just need to ensure there are messages in the bus and they stay awake.


----------



## Archangel_DT (Feb 18, 2021)

charlesrg said:


> ON F32 seats you don't need any special code to keep the seats awake, you just need to ensure there are messages in the bus and they stay awake.


This is for E65/66 and F01 seats.


----------



## Archangel_DT (Feb 18, 2021)

ckasinski said:


> Whoo, keep hacking!
> 
> I did receive my ESP32 and CAN but not the 3.3v Buck Converter so I'm still waiting. ESP32 has been flashed but don't have system power setup yet.


Any luck so far?


----------



## awxghl (May 28, 2020)

aston12 said:


> I don't use a Central Gateway Module either, so I'm not sure if I need n resistors either.


try this one:


awxghl said:


> -for setup without ZGW, it is needed to connect CANH via 60 Ohm resistor to ground and CANL via another 60 Ohm resistor to ground. (I used 100 Ohm resistors instead of 60 Ohm. 47 Ohm resistors didn't work)





aston12 said:


> I understand you used MCP2515?


I use MCP2551


----------



## awxghl (May 28, 2020)

erector said:


> I tried 125 and still not there. seat stays awake, but I don't see anything on the bus coming from the Seat or ZGW.


If you power ZGW properly (connect wakeup wire and possible there was one more) and terminate CAN, you should see some messages on the wire.
Seat will not send anything until you provide the two mentioned frames to it. Then it should respond every few seconds with the status of heating/ventilation.


----------



## erector (7 mo ago)

awxghl said:


> If you power ZGW properly (connect wakeup wire and possible there was one more) and terminate CAN, you should see some messages on the wire.
> Seat will not send anything until you provide the two mentioned frames to it. Then it should respond every few seconds with the status of heating/ventilation.


You mentioned that I need to Terminate CAN. Is that the resistor on the CANL?

I did find the wake up wire and now seat stays awake with just the ZGW powered up with CAN connections to the seat.

Still no luck with memory, heat, ventilation, easy entry or active


----------



## Seathack (7 mo ago)

dcf_atl said:


> OK I got my F30 seats to work in my e30 with no CAN of any kind. Not a thing of beauty, but I am working on cleaning up now that I confirmed it works.
> It's a 1 sec on with 4 off 5v pulse. and keeps my driver's seat alive
> 
> View attachment 1058552
> ...


This solution is the best for everyone who is trying to use these seats outside a modern BMW! Do you have any updates? thanks!!!


----------



## awxghl (May 28, 2020)

erector said:


> You mentioned that I need to Terminate CAN. Is that the resistor on the CANL?
> 
> I did find the wake up wire and now seat stays awake with just the ZGW powered up with CAN connections to the seat.
> 
> Still no luck with memory, heat, ventilation, easy entry or active


Do you have both seats connected? Or do you use the correct can ID for the seat that you want to steer? Do you get any response from the seat? If you send both can frames periodically to the seat it responds every few seconds.


----------



## sullivan1337 (7 mo ago)

Side note, I tried several 5v pulsing signals, none of which keep the seats alive unless BOTH pins (orange/green and green) have continuity after several pulses.
Would anyone be willing to sell/ship me a pulsing generator they have working? (or at least wiring diagram for one I can build?)


----------



## Seathack (7 mo ago)

Hey Sullivan,
try PMing dcf_atl for his advice, my privileges aren’t unlocked yet. On page 4 of this thread he posted a photo of his drok device and reported success. I ordered the same unit and a version that comes is a case, both arriving today. I will post my results, pictures and how loud the relay is…
cheers
Dieter


----------



## erector (7 mo ago)

awxghl said:


> Do you have both seats connected? Or do you use the correct can ID for the seat that you want to steer? Do you get any response from the seat? If you send both can frames periodically to the seat it responds every few seconds.


Yes, both seats connected. Still no luck in getting non-movement functions working. My next version will be to try to send the heating/cooling button press message to the ZGW and see what happens.


----------



## dcf_atl (10 mo ago)

erector said:


> Yes, both seats connected. Still no luck in getting non-movement functions working. My next version will be to try to send the heating/cooling button press message to the ZGW and see what happens.


My seats are still working great and THE CLICKING NOISE IS NOT AN ISSUE -- I can't even hear it when the car is running. I also added a switch to turn off the power to the relay for when the car is sitting for weeks without being driven. 

I only use them for movement + lumbar. The memory buttons make the seat move but don't actually correspond to any memory setting. Unfortunately, these are the best pics that I have before I packaged it all up under the seat and installed.

Just got "Otto" out of the paint shop yesterday and wanted to share!


----------



## Narodk (6 mo ago)

erector said:


> That is awesome, I still cannot get anything but movement. would you mind sharing? Here is what I have so far. Forgive the messy prototype code
> 
> // demo: CAN-BUS Shield, send data
> #include <SPI.h>
> ...


So I used your code to make my seats work. Works great but for some reason the drivers ventilation goes on every once in a while, any reason that might happen? Thanks in advance!


----------



## erector (7 mo ago)

Narodk said:


> So I used your code to make my seats work. Works great but for some reason the drivers ventilation goes on every once in a while, any reason that might happen? Thanks in advance!


 That’s good news. I can’t get it to turn on. Try removing this line from the code :

if ((millis() >= goTime2)) TurnFanOn(); 

-Eric


----------



## Narodk (6 mo ago)

erector said:


> That’s good news. I can’t get it to turn on. Try removing this line from the code :
> 
> if ((millis() >= goTime2)) TurnFanOn();
> 
> -Eric


ok I'll try. I am using the front switches from an E65 and it works together. Seats are from an F01


----------



## Narodk (6 mo ago)

erector said:


> That’s good news. I can’t get it to turn on. Try removing this line from the code :
> 
> if ((millis() >= goTime2)) TurnFanOn();
> 
> -Eric



OK! Removing that line worked for me. Now it works great. I have Memory, Heating, and Ventilation. There's just one thing going on. The LED lights go off and on randomly but the fans or heating stays on if I turn it on. Everything works as it should, just the random LED for now. Not a big deal but if we can fix that, then it would be perfect. Thanks again!


----------



## Taras V (5 mo ago)

awxghl said:


> As I mentioned in the referenced thread I managed to get the single-press behaviour without emulating door open signal. In my case the following coding solved the problem:
> `3000 SM_GLOBAL -> MEMORY_VERHALTEN = werte = 01 (1607) [was 01 (legacy)]
> 3000 SM_GLOBAL -> MEMORY_MAX_DRUCKDAUER_TTB = werte 0C (1607) [was 00 (legacy)]`
> 
> ...


*awxghl, thank you very much for sharing the information - it saved me a lot of time*

I managed to control massage on the right seat:
-send button press 0x1EC:FDFF
-delay (e.g. one second)
-send button release 0x1EC:FCFF
-seat module will send the confirmation at after state change
with an ID 0xXXX (0x22A for passenger's seat) XW YZ F0 with:
W - massage state:
0 - off
1 - on

I need more info about single-press behaviour or emulating emulating door open signal.
How can I use coding you provided?
`3000 SM_GLOBAL -> MEMORY_VERHALTEN = werte = 01 (1607) [was 01 (legacy)]
3000 SM_GLOBAL -> MEMORY_MAX_DRUCKDAUER_TTB = werte 0C (1607) [was 00 (legacy)]`
I'm using arduino to send can frames to my office BMW F01 chair (without ZGW)


----------



## awxghl (May 28, 2020)

Taras V said:


> *awxghl, thank you very much for sharing the information - it saved me a lot of time*
> 
> I managed to control massage on the right seat:
> -send button press 0x1EC:FDFF
> ...


Thanks! This confirmation is to on or off the LED next to active seat (massage) button in the panel.



Taras V said:


> I need more info about single-press behaviour or emulating emulating door open signal.
> How can I use coding you provided?
> `3000 SM_GLOBAL -> MEMORY_VERHALTEN = werte = 01 (1607) [was 01 (legacy)]
> 3000 SM_GLOBAL -> MEMORY_MAX_DRUCKDAUER_TTB = werte 0C (1607) [was 00 (legacy)]`
> I'm using arduino to send can frames to my office BMW F01 chair (without ZGW)


Probably the easiest way is to buy an old ZGW and use OBD cable with esys to code it. Alternatively connect your seat's modules to your car and code them. However, I'm not sure if it will work with all versions of modules. I have 3 versions (one black and two grey (newer)), I got it working only with the grey.
You can also emulate the button press (send periodically the press) for example for 10 seconds and hope that it is enough
I haven't tried to emulate the door open signal.


----------



## erector (7 mo ago)

Is this programmed in the ZGW?

3000 SM_GLOBAL -> MEMORY_VERHALTEN = werte = 01 (1607) [was 01 (legacy)]
3000 SM_GLOBAL -> MEMORY_MAX_DRUCKDAUER_TTB = werte 0C (1607) [was 00 (legacy)] 

if so, anybody willing to program into my ZGW? 

-Eric


----------



## awxghl (May 28, 2020)

erector said:


> Is this programmed in the ZGW?
> 
> 3000 SM_GLOBAL -> MEMORY_VERHALTEN = werte = 01 (1607) [was 01 (legacy)]
> 3000 SM_GLOBAL -> MEMORY_MAX_DRUCKDAUER_TTB = werte 0C (1607) [was 00 (legacy)]
> ...


No, there are for seat module.


----------



## palpat (3 mo ago)

awxghl said:


> IMHO: You use wrong CAN speed, it should be 125Kbit/s.
> 
> If there is an interest I could produce some modules. Feel free to express your interest. Here or in priv message.


I am interested in the module, I have a problem activating the seats from the bmw x6.


----------



## E34BMW99 (3 mo ago)

So much good info in this thread! I got a pair of F10 M5 seats 3+ years ago and was never able to get them working at all, gave up for a while. I'm trying to install them in a 90's BMW. Now I'm giving it a go again.

I have an Arduino Uno with a Seeed CAN hat, and have erectors program running on it and connected to the green and green/orange CAN wires, provided 12v power and ground to the thick seat module (A93) wires and 12v power to the seat switch (S32) but I'm getting no movement from the seat at all.

Since newTIS is no longer available I'm using post #7 on this thread as a pinout guide for the yellow X14 connector: BMW F10 SEATS UPGRADE

I don't have a ZGW, I have read through this thread multiple times and it is not clear to me if it is necessary to have this module. In awxghl's post resistors are mentioned,


> -for setup without ZGW, it is needed to connect CANH via 60 Ohm resistor to ground and CANL via another 60 Ohm resistor to ground. (I used 100 Ohm resistors instead of 60 Ohm. 47 Ohm resistors didn't work)


 but I don't understand what that means... how can I connect the Arduino and ground those wires to ground?

I have some old printouts from newTIS, the female connector A93*8B (small connector on far right while facing front of seat) on the control board doesn't have anything plugged into it. The pinouts indicate that pins 1 2 3 and 5 6 7 connect to the various seat control functions, does this route thru the ZGW and that's why it's missing?

*------------------------------------------------------------
EDIT: This is a quote from the above link: *


> I just did a quick check between an F10 523 with standard power seats, the A93 Seat Module, and A93*8B 8-pin connector is fully populated with wires, and connector A93*7A _*[[typo - should be A93*7B]]*_ 12-pins is fully blank (no wires), while on an F10 M5 w/ comfort seats, connector A93*8B has no wires, while connector A93*7B 12-pin if fully wired.


 Mine are the M5 sport seats and A93*7B is also fully populated while A93*8B is not populated. My old TIS printouts list all A93*7B pins as not used.
*-------------------------------------------------------------*

Should my seats be operational for 3 to 5 seconds after being supplied 12v and then shut down even without any CAN signal? I have never had them move at all. I did notice that the previous owner had probed a couple wires, and then I poked around a lot myself a few years back, I am wondering if my seat controller is fried although it looks ok. When I hooked it up tonight it sparked when I connected to pin 15, the thick red wire...yikes! None of the components on the controller board seem to have let the magic smoke out.


----------

