portapack-mayhem / mayhem-firmware

Custom firmware for the HackRF+PortaPack H1/H2
GNU General Public License v3.0
3.25k stars 532 forks source link

TPMS does not detect some Schrader Sensors (Dodge/Chrysler/Mercedes) #879

Open helmarw opened 1 year ago

helmarw commented 1 year ago

I think i posted it some time ago, but after updating to 1.6.0 i tried it again. Still nothing from my sensors. I got a lot from other cars but not mine. So in general its working just not all.

I also recorded the BB of one of my sensors i have lying around, and could replay it. Its beeing detected by rtl_433 on my mac using an rtl_sdr but nothing on the portapack. see screenshot. I can even see that portapack TMPS RX is receiving some signal but nothing gest decoded for some reason. Its a pretty standard and common sensor wildly used in most Chrsyler /Dodge and also in a lot of Mercedes so i dont know whats happening here

who is responsible for the TPMS part ? I would be happy if i can support getting this fixed, just dont know where to start and what the problem might be If you need more data or different BB from other Sensors just let me know, i'v a couple of those left over. I could even send them if that helps..

Schrader_ID19A0480.zip

Schrader_ID19A0480

here a second recording, i think its a bit cleaner and more dataset Schrader_ID19A0480_take2.zip

loewal commented 1 year ago

Same for me here. On 6 Apr 2023 at 15:33 +0200, helmarw @.***>, wrote:

I think i posted it some time ago, but after updating to 1.6.0 i tried it again. Still nothing from my sensors. I got a lot from other cars but not mine. So in general its working just not all. I also recorded the BB of one of my sensors i have lying around, and could replay it. Its beeing detected by rtl_433 on my mac using an rtl_sdr but nothing on the portapack. see screenshot. I can even see that portapack TMPS RX is receiving some signal but nothing gest decoded for some reason. Its a pretty standard and common sensor wildly used in most Chrsyler /Dodge and also in a lot of Mercedes so i dont know whats happening here who is responsible for the TPMS part ? I would be happy if i can support getting this fixed, just dont know where to start and what the problem might be If you need more data or different BB from other Sensors just let me know, i'v a couple of those left over. I could even send them if that helps.. Schrader_ID19A0480.zip

Schrader_ID19A0480_take2.zip — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

helmarw commented 1 year ago

thnx, i thought im the only one

loewal commented 1 year ago

Have to correct myself (a little): The screen stays blank, but I saw that there was a tpms.txt created. Its contents:

20230407080427 433920000 FSK 38400 19200 Schrader C1319CB9B59A34056ACA/8DBE9763DCB37F3A4A2F

So, is this a bug?

loewal commented 1 year ago

I had to put my microsd in an adapter on my iMac to see the contents of the txt-file. SD over usb doesn't work (yet) on Macos. Would it be possible to add a "view" button next to delete etc.... to view the contents of txt-files?

helmarw commented 1 year ago

Are you sure this is your sensor? I also recognize many sensors (including Schrader) as I ride, but none of them are mine. (Schrader has a lot of different sensors, not all are the same!). To test this, I got the Miller Tool 9936 to trigger the TMPS sensors on the bench. I can see the transmitted data after triggering with rtl_433 and a RTL-SDR but nothing happens in the portapack, neither on the screen nor in tpms.txt

also i can record the transmitted BB with the portapack an replay it. Same there nothing shows on the portapack but on rtl_433 it does...

loewal commented 1 year ago

Sorry, overlooked the real problem. My sensors for temp, pressure and humidity don't appear. I would like to be able to enter the frequency manually.

helmarw commented 1 year ago

TPMS with Humidity ? thats a new one! which car/sensor are you using ? can you record BB and post it here!?

PS: SD card via USB doesnt work with portapack, and wont ever afaik. Nothing to do with MacOS

gullradriel commented 1 year ago

SD card via usb was just added a few days ago. No one is responsible for an app, nor the TPMS one

gullradriel commented 1 year ago

I highly encourage people to try to start hacking themselves.

loewal commented 1 year ago

If I could, I would..certainly! I am of the days of Cobol, Pl1, little assembler. Objectoriented languages are like Chinese for a Frenchman 🤓 On 7 Apr 2023 at 11:46 +0200, gullradriel @.***>, wrote:

I highly encourage people to try to start hacking themselves. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

helmarw commented 1 year ago

if i knew where to start i would have already, but im not even seeing any error msgs nor do i know how to get them. Is there a debug option on the firmware? im mean not the Menue Debug, something like a logfile to see whats going on ?! or how do i see whats going on when receiving a TPMS packet ?

someone must have programmed the TMPS readout at some timepoint. Do you know who did it? maybe that someone can point me in the right direction ?!

helmarw commented 1 year ago

found my original post from 2020, thats how far i got at that time. Just wasnt enough feedback to actually kinda test it and then life got in the way for me to further continue at that time. maybe now if someone is actually able to program it or point me in the right direction....

just in case there are more people interested in improving the TMPS display, here is more information https://github.com/furrtek/portapack-havoc/issues/349

NotherNgineer commented 1 year ago

I'd guess proc_tpms is not matching any of the expected preambles if nothing is being written to the tpms.txt log file. From the rtl_433 debug output and C16 files in issue furrtek#349, it appears that there is no preamble and just a single start bit. Following the start bit, the next byte is 7Fh in the rtl_433 debug output and 83h in the C16 files (possibly the difference depending on whether the trace was taken using the Learn tool vs shaking the sensor). The rtl_433 debug output is also saying it's a standard "Schrader TPMS", not the "Schrader TPMS EG53MA4", and as far as I can tell rtl_433 code doesn't check for a preamble bit pattern and only checks the OOK packet length (should be 68 bits) and CRC to determine it's a TPMS sensor.

Just FYI, thought I'd take a look at this since I recently made other fixes to the TPMS code. I can attempt to create a firmware patch for you to test if it would help (unfortunately I don't have any sensors like that).

helmarw commented 1 year ago

that would be great, i can test it for you, no problem! if you have the possibility to trigger the sensor manually, i can also send you one of my spare sensors.

helmarw commented 1 year ago

i just did a testbuy on Amazon to try a cheap Trigger device: https://www.amazon.de/dp/B08R5VLYPZ?psc=1&ref=ppx_yo2ov_dt_b_product_details working just fine for less than 12euros

the TMPS-Sensor in question is this one: https://www.pkwteile.de/schrader/9482285

but you can find them cheaper on ebay or aliexpress, though they might be fine when triggered but not working in an actual car! i found that out the hard way ;)

sorry the video-overlay from my phone is mirrored but you get the idea. The device ID is on the label 19A0480 the same reported by rtl_433 https://user-images.githubusercontent.com/10408121/234269969-6a01fb56-eec9-4326-b459-9f2026df8dd0.mp4

NotherNgineer commented 1 year ago

That's funny, I have the exact same TPMS Trigger device from Amazon sitting on my desk. (I can't help but wonder if there's any way to get hackrf to transmit at the low 125KHz to emulate this trigger device, e.g. perhaps software flipping the carrier on & off).

Anyways I usually just shake my old TPMS sensors to trigger them (or drop them on my desk a few times). When I put one in a covered pot of boiling water (in sealed bags) to check for 100C temperature output, it also transmitted regularly, perhaps because of the temperature change or perhaps from the bubbles. :-)

Would you mind running rtl_433 again with verbose logging enabled -vvv and then trigger the sensors two different ways to see how the output pattern differs?: (1) output when using Trigger device, (2) output when shaking sensor.

When I get my test code ready, I might drive over to a tire shop where they have a bucket of old removed sensors. It might be a few days, but I know you're patient since you originally reported this issue in 2020. :-)

helmarw commented 1 year ago

i thought of that too, but 125kHz is to low for Hackrf. Was more thinking in the direction Raspberry or Arduino. But then i got the original Miller Tool for cheap and now i found out a generic 12euro TPMS Relearn Tool will do the trick as well. So why bother?!

Shaking doesnt work at least not the one i have here extra. There is something wrong with its IMU or whatever its using to detect tyre rotation, it also doesn't work in the car! never buy those things from ebay or china! (see previous post) But rest assured the device does not send anything different. I tested it extensively in the car while driving and and on the bench triggering it.

what exactly do you want to see from -vvv? somehow i cannot get the entire stdout written to a file. everthing with "Pulse" in front of it its only displayed in the console but not written to file. i tried this: rtl_433 -R 60 -vvv -F kv:trigger_tpms.txt but here is the output I copied from console: (one dataset from the sensor)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
time      : 2023-04-25 16:40:37
model     : Schrader     type      : TPMS          flags     : 00            ID        : 19A0480
Pressure  : 2.5 kPa      Temperature: 22 C         Integrity : CRC
Pulse data: 57 pulses
[  0] Pulse:  102, Gap:   24, Period:  126
[  1] Pulse:   38, Gap:   23, Period:   61
[  2] Pulse:   39, Gap:   23, Period:   62
[  3] Pulse:   38, Gap:   25, Period:   63
[  4] Pulse:   36, Gap:   26, Period:   62
[  5] Pulse:   67, Gap:   23, Period:   90
[  6] Pulse:   37, Gap:   56, Period:   93
[  7] Pulse:   37, Gap:   25, Period:   62
[  8] Pulse:   36, Gap:   24, Period:   60
[  9] Pulse:   37, Gap:   25, Period:   62
[ 10] Pulse:   37, Gap:   25, Period:   62
[ 11] Pulse:   37, Gap:   23, Period:   60
[ 12] Pulse:   37, Gap:   25, Period:   62
[ 13] Pulse:   37, Gap:   24, Period:   61
[ 14] Pulse:   39, Gap:   24, Period:   63
[ 15] Pulse:   37, Gap:   23, Period:   60
[ 16] Pulse:   37, Gap:   24, Period:   61
[ 17] Pulse:   69, Gap:   24, Period:   93
[ 18] Pulse:   37, Gap:   56, Period:   93
[ 19] Pulse:   37, Gap:   23, Period:   60
[ 20] Pulse:   69, Gap:   25, Period:   94
[ 21] Pulse:   36, Gap:   56, Period:   92
[ 22] Pulse:   67, Gap:   55, Period:  122
[ 23] Pulse:   37, Gap:   26, Period:   63
[ 24] Pulse:   36, Gap:   23, Period:   59
[ 25] Pulse:   37, Gap:   24, Period:   61
[ 26] Pulse:   37, Gap:   25, Period:   62
[ 27] Pulse:   38, Gap:   25, Period:   63
[ 28] Pulse:   66, Gap:   55, Period:  121
[ 29] Pulse:   38, Gap:   24, Period:   62
[ 30] Pulse:   68, Gap:   55, Period:  123
[ 31] Pulse:   37, Gap:   24, Period:   61
[ 32] Pulse:   38, Gap:   25, Period:   63
[ 33] Pulse:   36, Gap:   25, Period:   61
[ 34] Pulse:   37, Gap:   23, Period:   60
[ 35] Pulse:   37, Gap:   24, Period:   61
[ 36] Pulse:   38, Gap:   24, Period:   62
[ 37] Pulse:   38, Gap:   26, Period:   64
[ 38] Pulse:   35, Gap:   24, Period:   59
[ 39] Pulse:   37, Gap:   24, Period:   61
[ 40] Pulse:   38, Gap:   24, Period:   62
[ 41] Pulse:   39, Gap:   22, Period:   61
[ 42] Pulse:   38, Gap:   24, Period:   62
[ 43] Pulse:   37, Gap:   24, Period:   61
[ 44] Pulse:   70, Gap:   54, Period:  124
[ 45] Pulse:   67, Gap:   55, Period:  122
[ 46] Pulse:   38, Gap:   24, Period:   62
[ 47] Pulse:   68, Gap:   54, Period:  122
[ 48] Pulse:   38, Gap:   23, Period:   61
[ 49] Pulse:   38, Gap:   25, Period:   63
[ 50] Pulse:   68, Gap:   23, Period:   91
[ 51] Pulse:   37, Gap:   24, Period:   61
[ 52] Pulse:   38, Gap:   56, Period:   94
[ 53] Pulse:   67, Gap:   55, Period:  122
[ 54] Pulse:   38, Gap:   23, Period:   61
[ 55] Pulse:   38, Gap:   25, Period:   63
[ 56] Pulse:   34, Gap: 2501, Period: 2535

and here what's been saved is the file. nothing new though trigger_tpms.txt

dont worry, whenever you have time i'd like to help ! :)

NotherNgineer commented 1 year ago

Just FYI, I noticed that Honda CRV TPMS sensors aren't showing up either, so I guess it's hit or miss whether a vehicle is supported or not. But, while I've been side-tracked on other code changes, I'm still thinking about how the TPMS code is going to handle the incoming data stream when there is no preamble to check (a preamble helps to filter out random noise). Eventually I will get back to this one... :-)

helmarw commented 1 year ago

maybe have a look at the RTL_433 code?! they somehow handle it...