Skip to main content
Topic: Can you make it harder to enter the bootloader mode? (Read 1644 times) previous topic - next topic

Can you make it harder to enter the bootloader mode?


I am writing a wireless keyboard emulator for a 33-year old Japanese classic PC called FM77AV.  USB IR Toy works like a magic.  I'm going to make it open source in a few days.

However, as many other users are complaining, it is bricked if my program accidentally sends 0x24 outside the sampling mode. And in some occasions, the device mysteriously reset to IRman mode.  Looks like it happens when the device was overwhelmed by IR signal emitted from the ceiling light.  Then my program sent 0x24 to enable byte count.  Boom!

Luckily I was able to re-flash it (-reset didn't work by the way) from my Windows 7 machine, but I almost lost the device.  Now my program strictly avoid sending 0x24 no matter in what mode it is.  But,

(1) Can you avoid using 0x24 for enabling byte count?  Using same code for bricking and other purposes is not a good idea.  If the device never gets out of the sampling mode, that may be fine. But many times my USB IR Toy started sending back "1ALS" while the device was supposed to be in sampling mode.
(2) Just one byte '$' to brick the device is too fragile.  Self-destruction command should be more complex and unlikely byte pattern.  Can you make  this suicide command more complex?  Like 8-byte sequence of "!@#$%^&*" is more appropriate.

Well, I was able to recover it with my Windows 7 machine.  But unless it is made more complex byte sequence, more and more units will be bricked by unexpected reset followed by just one byte of 0x24.  (It is too light to call a 'brick' though)

Other than that, USB IR Toy works like a magic.  Similar IR devices typically have maximum pulse resolution of 28us.  I need to send precisely 100us pulse, which cannot be done with 28us resolution.  Being able to go down to 0.17us resolution is amazing.


Re: Can you make it harder to enter the bootloader mode?

Reply #1
I found this workaround for the not working "-reset" function:

./fw_update -r -v -m flash -vid 0x04d8 -pid 0xfd0b -ix USBIRToy.v24.hex

This is a read operation which also puts it back to normal operation mode.