I persevered a little more with this, which might end up being a terrible side hobby...I'm not sure if this will be of interest or use to anyone else, but writing it out will encourage me to collect some thoughts!
I scoped most of the pins and didn't see anything particularly exciting (a bunch of LCD driving signals on the pins you'd expect).
I continuity tested the pads, and I think they're connected as below:
The TX does seem to be high, so I figured what the heck, and soldered some headers on. Side note: I can certainly re-assemble the case, but the battery cover clip is slightly blocked so it's probably worth angling the headers, or using shorter ones/trimming if you want to do this:
As J0sh figured out above, the comms does seem to be challenge/response. I figured I'd take a blunt approach to this, and just decided to hook up a random pattern generator, a logic analyser, and assault the RX with gibberish to see if something happened.
A couple of things did happen:
- Sometimes all the characters lit up on the display, I'm not sure if this is an error condition, or I was hitting some kind of test command.
- It threw some data back at me with (I think) a bit duration of
214us, so I'm assuming our baud rate is
4800After staring blankly at the data for a while and trying to figure out which part of my random signal was responsible, I decided it would be easier just write a little utility to send some random bytes, or a sequence of bytes and stop when I got a response, logging the data.
So far I've identified two different single byte "commands"
- `
0x6D` (
m)
- `
0x77` (
w)
Sending either of these bytes will net you some response bytes, I'm not yet sure if the information is in any way useful, but here's a small summary of what I've seen so far.
The
0x77 command will get you a 16 byte response:
- From logging the data at different intervals, I think the message contains at least the following info:
- 0) Message start, does seem to change for some reason, but not frequently, seems to initially be
0x00 when device is reset
- 1) 0/Null
- 2/3) Bytes seem to change rapidly, potentially one could be a checksum?
- 4) Byte seems be
0x80 most of the time, maybe some kind of status?
- 5) Timestamp Seconds
- 6) Timestamp Minutes
- 7) Timestamp Hours
- 8 ) Command byte/Request Byte (
0x77)
- 9/10) 0/Null
- 11) Seems to be
0x60 most of the time, but changes to
0x40 every ~6 seconds
- 12/13) 0/Null
- 14) Message length (
0x10)
- 15) Message terminator?
0xA5Message Start?,Null,?,?,Always 80?,Seconds (0-60),Minutes (0-60),Hours?,Command byte,Null,Null,?,Null,Null,Length,Terminator?
0A,0,09,1F,80,39,37,0B,77,0,0,40,0,0,10,A5
0A,0,68,C3,80,3A,37,0B,77,0,0,60,0,0,10,A5
This seems to be a sort of message footer which is also included in the response generated by the
0x6D message.
The
0x6D command will get you a 128 byte response:
- I haven't looked into at this one too much yet. Something to note here is that you actually get a 144 byte response back, but the first 16 bytes seem to be a repeat of the last 16 byte message footer from the previous message which I've removed in the examples below.
- The last 16 bytes are a similar message footer to the above
- The examples are taken from different times of day
- I have seen this message be almost entirely 00s at device power up. I'm wondering if this is a serialised data structure, or a view on some device memory.
A5,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F,40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F,60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F,70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F,90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F,A0,A1,0A,00,C4,8F,82,0E,03,01,6D,00,00,50,00,00,80,A5
A5,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F,40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F,60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F,70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F,90,91,92,93,94,95,96,97,98,99,9A,9B,06,07,08,09,0A,6D,50,00,B2,69,82,1F,06,04,6D,00,00,50,00,00,80,A5
A5,B4,45,54,43,A0,40,48,3E,1B,3C,A8,39,82,37,DE,35,2C,34,70,32,E4,30,DB,2E,78,2D,28,2C,F3,2A,5A,29,22,28,12,27,C8,25,AE,24,AE,23,E6,22,71,21,DB,20,66,20,23,1F,BD,1E,EC,1D,46,1D,C5,1C,3A,1C,66,1B,F9,1A,2E,1A,E8,19,CC,19,1D,19,E8,18,AB,18,16,18,C1,17,33,17,47,17,AB,16,41,16,10,16,AD,15,8E,15,5D,15,74,15,48,15,11,15,03,15,BD,14,8F,14,AA,14,0A,00,D4,E9,82,2A,3A,0B,6D,00,00,40,00,00,80,A5
A5,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,28,00,66,00,C5,00,41,01,BC,01,F1,01,40,02,D5,02,58,03,8C,03,AD,03,C6,03,89,04,8E,04,C9,04,A0,05,D5,05,75,06,73,06,DD,06,46,07,90,07,19,08,67,08,AA,08,1C,09,78,09,FE,09,3B,0A,98,0A,C7,0A,EB,0A,36,0B,97,0B,D1,0B,07,0C,70,0C,EC,0C,39,0D,8B,0D,DE,0D,0E,0E,06,0E,58,0E,9A,0E,E1,0E,0F,0F,3A,0F,0A,00,A1,A5,82,25,1A,03,6D,00,00,50,00,00,80,A5
Some notes:
- I'm currently collecting a large sample of the
0x6D messages starting from a clean powerup, I'll see if anything within that piques my interest.
- When I was sending it random data and the entire LCD lit up, I don't think I received a response. I'll do some more testing around this to see if I can figure out what the trigger condition is.
- There may be longer commands, I might try some more systematic "random" messages.
- I did go down a small rabbit hole of inspecting the CRA-SW app, and whilst I made some headway, internally it looks like it uses LabView to communicate with the device, so that'll may be a complex nut to crack. I think I did see a reference to an FT230X in there though (as J0sh thought).
- I did hook up an FTDI cable, and whilst it does appear in the app, and you can click "Download data", nothing seems to appear comms wise; I suspect there's some kind of serial number/descriptor check for validity.
- I'm happy to attach some of the collected data, but it's currently a bit rough and ready =D