-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BMW Gen5 TPMS support #2821
Comments
It's basically the same. MC can't reliably discern the timing of the short transitions until the first long one. |
Does it make sense then calculated CRC for stripped data:
? |
With bitbench I am able to guess:
Should I investigate more or could I try to prepare decoder? |
0xaa as init seems much nicer than 0x40. And we usually expect a preamble. The resulting raw |
Looks good already. You might be missing the alarm flags like rapid deflate, low battery and diagnostics as spinning, triggered, ... |
I tried to guess couple more columns - bitbench, but some of them are hard for me to verify. I'm using diagnostic tool as reference: What should be the next steps? |
PR a decoder if you like :) Look into the other TPMS decoders and copy one that looks clean and simple. |
Hi @petrjac : try to increase the pulse to 27 instead of 25 and you will get the 0xfff, if you reduce to 24 you will get the 0x000 |
That's unexpected. For MC we don't need an exact timing and the slicer should always match. Does this slight change somehow match/ignore the first "bit"? That would change the assumption about 000 vs fff. |
When trying with
|
Thanks for confirming! That does not seem right, we need to look into that. I can try to rewrite the MC slicer with that nice example we have here. |
Hi @zuckschwerdt , @petrjac : FYI, I drafted a decoder, and started listening to the cars passing on my street. Sounds like the bitbench is not exactly as expected, I need to consolidate my findings in a table and back here soon. About the rf decode part, I'm using FSK_PCM, s=l=25, r=100, then looking for preamble = 0xaa59 then MC decode + Invert. Data Layout :
The pressure values, I'm not able yet to find a simple formula to convert value into kPa or PSI , I need more samples for that. Notice that the captures from Airspy @ 10MHz are not readable by rtl_433 (no error, but only partial value), only the 2.5MHz give expected results with |
@ProfBoc75 you are faster than me :), I was planning to write decoder on the weekend. I'l be happy to help you at least with my findings:
|
I noticed also that , depends on the first byte , Manuf/Brand, the coding is not the same, And for 0x80 (128) sounds to be Continental model. There is another discussion here where the data packet is also 11 byte The RF part is not the same (not Manchester coded), but the data formatting sounds to be very close, just not information in the same order as Brand HUF (0x03). if we guess all the formula and with DATA_COND, we may be able to handle these 2 Brands. Edit : looking at the RDC Production information guide (page 20, 3. Operation picture) , the third brand could be "Schrader" trademark of "Sensata", and I notice that from my street :
|
FYI, it takes time to collect metrics and to deep dive, since I'm trying to manage the 3 brands in the same decoder, and not so much cars in my one way street. At least the brand 0x03 / Huf Gen 5 is ok for me without the flags decoding which require some work, we don't know which bit is related to battery, fast deflating and so on ... |
In diagnostic sw data I have found more manufacturer for TPMS:
However I cannot be sure that list is correct/complete. On the weekend I'll try to receive signals from HUF sensors to confirm temperate, pressure and maybe also alarm tags. Interestingly the RDCi gen 5 sensors should also send tire size ... |
Hi, I collected some data from the street : I kept the original order to get the sequence number increasing if any.
|
Hi,
|
I'm already looking into The minmax discriminator is default on 868 MHz where most TPMS are. It does not work too well for 433.92 MHz, usually OOK. Try to convert some of your signals to OOK (with FSK proper name would be mark/space not on/off...) and look how noisy the resulting pulses are. E.g. g018_433.92M_2500k.ook
|
OK, thank you for clarification:). This is probably due unappropriate Soapy params for Airspy R2 |
Checked with :
After MC decoded , missing 1 bit to be a valid message, expected {88} bits, 11x8 , so the message is too short and excluded. I tried to go further and the CRC failed.
Good for brand 0x03, HUF, sounds like brand 0x80, Continental, the temp is DEC - 50, we need feedback from Continental valve owners to confirm that.
From your bitbench, the pressure is clearly = DEC * 2.5 (kPA) or DEC * 0.025 (Bar) , as most of TPMS sensors. We saw that from other TPMS decoders , value can be coded like that : (DEC - x ) * 2.5 to get the figures.
rtl_433 is receiving 3 signals, so each one are decoded.
From the RDC tool guide, the temp should be taken into account in the normal pressure, + 0.1 bar / + 10 °C , so may be the temp is not same too ?
I don't understand your point, it's properly decoded with |
What bmw part number TPMS this refer? |
For Huf gen. 5 the P/N is 36106877937. |
Hello again, I recorded several samples with BMW Gen4 sensors. The message format looks similar to Gen5 sensors and also samples collected by @ProfBoc75. Here is bitbench with decoded data. I was also able to compare data with official diagnostics. Notes:
|
Hi @petrjac: Thanks for this feedback, can you try with this option I'm not able to decode your last 4 x CS16 files. |
@ProfBoc75 I tried this... would this be useful?
Demodulated signal looks like this in URH: Raw hex is |
I fact, I wanted you to run rtl_433 in live to see if you are able to get some answers, and I put verbose information in the decoder itself, like data before and after MC, so we can see where it failed and it could help me understand. This option
you may test with auto gain with From your 4 samples, rtl_433 is not able to decode,
But from your last raw hex information, it looks like it should work, we can replay with rtl_433 like this:
Edit: So for me, apart from the version/generation 4 to be taken into account, it's a signal reception problem to be tuned, playing with the gain and your LNA / MIX / VGA levels or |
Yes, that's correct. |
Does this sensor need to receive any data to start sending pressure and temp? |
@luki343 Depends on brand model and the behavior could change between static / parked situation where the sensor is in standby mode to preserve the battery and from moving where the sensor can also send some kinetic information into one of the 3 flags. You may be interested in this Arduino project which is already handle BMW model. You may have to cross check if they updated it with our last update with Audi model and Audi pressure alert. |
@ProfBoc75 I need to adapt some TPMS to my "race car" and send it to ECU via CANbus, so the easiest way will be to use one of the currently decoded sensors, but if it needs to receive some message from car, I'm lost. I will definitely check out this project, thx |
What's the status and plan? Is there a decoder in tree, or does something need to happen? If so, is anyone working on it? |
Hi @gdt:
Said that, this issue can be closed. |
Great, thanks. (FWIW, I am a fan of putting unknown bits in the output labeled as unknown bits/bytes, as it seems the path to improvement.) |
Hi! @luki343 : Thanks in advance Mike |
You can make them go into "emergency" mode by letting all the air out down to 10psi. They'll constantly send a signal for a couple minutes or until the tire is filled back up. |
Thanks for your fast response! Mike |
Being a noob to all this, I would like to discuss the BMW Gen5 TPMS Sensors a little further. Mike |
Unless there is an actionable todo it is preferred to continue here, where all involved people already listen :) |
Ok. thanks for your response!
When ISTA is connected to my car, none of the ABL (Ablauf = sequence of events) concerning TPMS are able to be carried out. Probably due to "No error / fault code". So no activation of transmitter ... Mike |
what is the brand reported for your sensors ? As I'm also pretty sure that the behavior/ purpose of flags is different between brands. I listened to the sensors passing in my street and tracked them in an excel table. For each transmission there are 3 identical messages except for 1 flag which increments and depending on the brand it is not the same flag. |
@ProfBoc75 : I checked out the findings of @Billymazze and deflated the tire slowly. First record entry was at 31.5 kPa. Unfortunately I haven't found a solution for spinning the wheel in the garage > 20/30 kph. That would make it much easier ... Mike |
Today I did that test-drive for confirmation of suspected speed numbers. I attached the logfile so that everyone can conclude for themselves ... Mike |
Very interesting. Notice also the range for the flags3. |
Yep. I attached the old logfile for the "fast deflate" . Maybe you are able to derive something ... |
So we can update the comment part with the data layout of the 3 flags. Continental model: (brand id = 0x80 = 128)
|
I saw that also from my street, where temperature could be much less than the air but this could be explained if the car just exit from a garage with a colder temp, depends also if the wheel rim is aluminum or steel, this could help also to dissipate heat ? I can't confirm the temp value as I don't have the sensor at all. Only the tpms display or the diagnostic tool can confirm the temp. |
Unfortunately my car doesn't show the temperatures on the TPMS display; only tire pressures. Mike |
Oops! |
😄 just "thumbed up" again, it will toggle off. |
Ok. I found the parameter with the coding software and have now the tire temperatures on the TPMS display. Mike |
Due to unforeseeable circumstances I haven't had the opportunity to drive fast in hot weather conditions.
Obviously the tire temperature is not affected by the tire temperature on the outside. Thats where I took the wrong turn. Mike |
Thanks! A surprising result. Of course air is a good insulator, but I'd have guessed that tire air and tire rubber equalize to the same temperature. |
Yep. That was my expected outcome too. I was absolutely surprised. Mike |
Hi,
I'm trying to decode BMW Gen5 TPMS sensors.
I recorded several samples using Airspy R2 SDR - https://github.com/merbanan/rtl_433_tests/pull/463/files .
I was able to read raw data using URH and resolved CRC-8 as
poly=0x2f init=0x40
:However with rtl_433 I'm getting different results:
Binary data started with
0x000
instead of0xfff
.Could please someone help with verifying data before proceeding?
The text was updated successfully, but these errors were encountered: