XHC WHB04B development?

More
8 months 1 week ago - 8 months 1 week ago #343374 by kello711
Replied by kello711 on topic XHC WHB04B development?

I don't think I would trust a USB device under these circumstances. I would recommend you go back to XHC's website and look for a 433 MHz pendant that hard wires in to send/receive unit. After years  of use, these have never let me down 

Do you have a link to the one you use or a model number?
Last edit: 8 months 1 week ago by kello711.

Please Log in or Create an account to join the conversation.

More
8 months 1 week ago #343383 by Finngineering
I had a feeling that it could be possible to read out the factory firmware from the dongle due to some bugs in the firmware. And that is indeed the case, at least for a partial readout. It is possible to read the firmware from where the USB device descriptor is stored in program memory until and including the bootloader. I added this tool to the github repository:
github.com/finngineering/whb04b/blob/mas...s/firmware_readout.c
While I think this tool should be safe to use, I give no guarantees. With a partial readout, I could compare that to my firmware, and if it matches, the likelihood that the whole firmware is the same is very high.

Actually, now that I've done this, I remember that there is a much easier way to read out the firmware from CH55x with bootloader version lower than 2.50 (which is the version that my dongle has). The above tool should print the bootloader version, and if it's less than 2.50, I could maybe make a tool to read out the firmware through the bootloader and over USB.

Please Log in or Create an account to join the conversation.

More
8 months 1 week ago #343384 by Hakan
Replied by Hakan on topic XHC WHB04B development?
Here is what happens when I run the tool. My whb04b is from the era when they just stopped selling the predecessor.
Code:
debian@dev100:~/src/whb04b/tools$ LD_LIBRARY_PATH=/usr/local/lib ./firmware_readout a.bin 1771927787.762 info: Read device descriptor with idVendor=0x10ce and idProduct=0xeb93 1771927787.763 info: Starting firmware readout process 1771927787.872 info: Read  5440 of 65535 bytes =   0.08% 1771927787.872 info: Found bootloader version 2.40 device descriptor after 5421 bytes 1771927787.872 info: Based on bootloader address, read firmware is from address 0x2961 to 0x37ff 1771927787.872 info: Wrote 5440 bytes to file a.bin
The output from the command is attached,
The following user(s) said Thank You: NWE

Please Log in or Create an account to join the conversation.

More
8 months 1 week ago #343395 by Finngineering
Thank you for testing. The output indicate that the program was working as expected. The firmware is not exactly the same as mine, but it looks similar. How big differences/similarities there are would require disassembly comparing those. I can see that at least memory addresses are a bit different. Here is the output from mine (not the real dongle, I put the factory firmware on another device which has bootloader version 2.40):
Code:
$ ./firmware_readout firmware.bin  1771943478.782 info: Read device descriptor with idVendor=0x10ce and idProduct=0xeb93 1771943478.783 info: Starting firmware readout process 1771943480.843 info: Read  5496 of 65535 bytes =   0.08% 1771943480.846 info: Found bootloader version 2.40 device descriptor after 5481 bytes 1771943480.846 info: Based on bootloader address, read firmware is from address 0x2925 to 0x37ff 1771943480.846 info: Wrote 5496 bytes to file firmware.bin
The addresses and sizes are close to each other, but not exactly the same.

Because you have bootloader version 2.40, I believe we would be able to read out the firmware through the bootloader. But it requires creating a similar program for that as the one we just used. And to get to bootloader mode, a 10k resistor needs to be added to the pendant. So maybe better to wait until I have tested the new firmware a bit more. And then you could read out the firmware and flash the new one at the same time, if you are still interested at that point.

Please Log in or Create an account to join the conversation.

More
8 months 1 week ago #343423 by Finngineering
I used the mill for a couple of hours today with my firmware in the pendant. I tried my best to cause some issues, but no disconnects from the dongle nor any other issues as far as I could tell. To be honest, I'm surprised that it works this well already.

I found a sticker with version information on the back on my pendant (underneath the rubber):
 
The top row is the firmware version and the bottom row the hardware version, I believe. And the RX should be the dongle, because there is a V09 marking on the main board (underneath the RF module).

And I attach a couple of photos from the dongle as well, in case somebody wants to compare. Not the best photos. I took them through the microscope some months ago. And right now I have a thousand wires connected for debugging, so not possible to take good photos at the moment.
 
 
The following user(s) said Thank You: NWE

Please Log in or Create an account to join the conversation.

More
8 months 6 days ago #343522 by Hakan
Replied by Hakan on topic XHC WHB04B development?
The sticker on my pendant 
 

Had two crashes yesterday. Mode switching. libusb_fill_interrupt_transfer() isn't the solution.
 
I had commented out the assert() in setupAsyncTransfer and let it continue
Failed here  github.com/LinuxCNC/linuxcnc/blob/0673e3...whb04b-6/usb.cc#L541





 

Please Log in or Create an account to join the conversation.

Time to create page: 0.266 seconds
Powered by Kunena Forum