v0l / radio_tool

Radio firmware tool
https://discord.gg/V596cyatmv
GNU General Public License v3.0
82 stars 16 forks source link

Support for Yaesu FT-70 #17

Closed n1zzo closed 1 year ago

n1zzo commented 1 year ago

Hi @v0l , we're playing with the Yaesu FT-70, trying to port OpenRTX. I've written a libusb based flasher for the radio which already works under linux: h8300-flasher. However I'd like to have the support for FT-70 in radio_tool to be better integrated into the whole OpenRTX toolset. I'm opening this issue to keep track of the effort, I think I can do it myself. Also counts as one PR for the Hacktoberfest ;)

Cheers,

Niccolò IU2KIN

v0l commented 1 year ago

Nice!, let me know if you have any questions but i think it should be simple enough to add support via USBRadioFactory:

https://github.com/v0l/radio_tool/blob/a81a2635d807a4fa8c9f23444182fc87e77e8224/src/usb_radio_factory.cpp#L39-L44

This will already enumerate USB devices and allow you to check VID/PID etc!

n1zzo commented 1 year ago

So, this radio is not using DFU but bulk transfers with a proprietary protocol on top which is specific to the Renesas H8SX architecture, i think I will separate those functions in a dedicated compilation source so that we can keep high level code for the specific radio. Yaesu ships encrypted firmware with footer including version and target radio, which can be decrypted with porkchop. However the original firmwares are only contained inside the updater .exe, so are not visible to the public. As far as OpenRTX is concerned we were thinking about using raw binary images, however we would lose model compatibility checks. What is your take on this? Can we make radio_tool just support raw binaries, either OpenRTX or the porkchop decrypted binaries but losing metadata and device compatibility checks?

v0l commented 1 year ago
  1. UsbRadioFactory does not restrict you to DFU types, it just gives you libusb device handles and you can implement that however you want, i still think this new code should hook in here
  2. Im ok with raw binary stuff, the firmware checks are not that important, its just a nice to have
v0l commented 1 year ago

I generated some docs, you can see class relationship here https://data.v0l.io/radio_tool/docs/classradio__tool_1_1radio_1_1_radio_operations_factory.html

Or it should look something like this: radio_tool