OpenRTX / sa8x8-fw

Open source firmware for NiceRF SA8x8 allowing arbitrary digital radio protocols
GNU General Public License v3.0
33 stars 4 forks source link

Missing support for factory command set #4

Open edgetriggered opened 1 year ago

edgetriggered commented 1 year ago

This firmware currently only provides I2C register control, but it would be convenient if it served as a direct drop-in replacement firmware for devices relying on the factory command set. Close this issue when support for the factory command set has been added.

RE-Specto commented 4 months ago

Hi there! any chance seeing progress on this one? I've seen many that are currently hesitant on switching to the firmware, for it being a one-way ticket while loosing support fro original functionality. not trying to hurry up or something, just curious of the current state..

edgetriggered commented 4 months ago

@RE-Specto Hello, I am not actively working on this issue. I was able to backup the factory firmware but I am not using it in any projects that would be useful for feature testing by comparison. This issue can be reassigned to anyone who is better able to take on the effort.

RE-Specto commented 4 months ago

got you. I was looking into it, however it seems beyond my knowledge of embedded coding. maybe if you document registers a little bit more, then I or perhaps somebody else can give it a try 🤔

RE-Specto commented 4 months ago

I have done some research on the subject, and found at1846_registers.md and AT1846S_programming_guide.pdf (which are slightly inconsistent btw 🤷 ) those the registers to be used by i2c_read (PEEK) and i2c_write (POKE) right? is the original functionality can be wrapped around those two commands with the appropriate register values, or anything else is required?

edgetriggered commented 4 months ago

There are differences between the AT1846S and RDA1846S programming guides, which accounts for the inconsistencies. Commands not implemented by sa8x8-fw may be implemented from scratch by refering to these programming guides or can also be reverse engineered through monitoring I²C transactions on the hardware or even disassembling factory firmware. Publicly available documents appear to be missing some important registers that radio manufacturers seem to know about so that may be a difficult option. The included Python example is derived from the factory firmware on MD-UV380.

RE-Specto commented 4 months ago

hmm.. thanks for the clarification. so appears that more research is required at the moment. indeed somewhat above my current expertise unfortunately. maybe one day I'll be able to setup the correct equipment for eavesdropping on the I²C bus, and can document my findings, but until then hopefully someone better equipped for the task can take over