Last week we gave away a few Crazyflie 2.0 quadcopters to some cool Hackaday Prize entries. This quadcopter ships with the intention of being controlled by your smartphone. But it can also be controlled by a PC with USB dongle and an nRF24LU1+ SOC. [ajlitt] didn’t figure out he wanted the USB dongle (the Crazyradio) that can control this quad until after he used his gift code to claim his Crazyflie quad. No matter; the dongles for Logitech wireless keyboards and mice use the same radio as the Crazyflie and can be modded to make this quad fly.
The board inside the Logitech unifying receiver is a simple affair, with some pads for the USB connector, a crystal, the nRF24LU1+ radio module, and a few passives. To get this radio chip working with his computer, [ajlitt] simply needed to break out the SPI pins and wire everything to a Bus Pirate.
Getting the Crazyradio firmware onto this proved to be a little harder than soldering some magnet wire onto a few pins. The chip was first flashed without a bootloader, a full image with the bootloader was found, after wrangling a single byte into place, [ajlitt] had a working Crazyflie radio made from a wireless mouse dongle. The range isn’t great – only 30 feet or so, or about as far as you would expect a wireless mouse to work. Excellent work, even if [ajlitt] is temporarily without a mouse.
The Crazyflie 2.0 is available from the Hackaday Store, along with the add-ons if you don’t want to hack your own.
Always wondered if you could use a keyboard’s internals to control something. You can programmatically control the state of the caps/scroll/num lock. Maybe you could use that to turn something on or off.
I once used the num lock on a USB keyboard to drive a solid state relay and open and close my garage door. I had a python script running on my OpenWRT WiFi router. It would serve a smartphone keypad web site. I eventually added a webcam to tell if the door was open or closed.
awesome work!
Thanks!
This was a quick hack, just for fun. I thought it was worth documenting since there are many millions of these adapters out there that will someday end up being tossed that could be repurposed.
To be clear, the “single byte” and bootloader mistake were two different problems. The byte was a status flag showing that the memory protection features of the micro Logitech used wasn’t cleared by ERASE_ALL. So I added some code to the flash script to clear the configuration. The bootloader thing was me assuming the binary in the repo I forked had a valid bootloader.
Also the headline makes me regret ever using the word “dongle” in my project page, and I vow that I never will write or utter it again.
So I assume the firmware in the radio chip is why this receiver only works with Logitech keyboards and mice?
An Arduino made with Brian Benchoff in mind: http://www.wtfduino.co.uk/
The next quiestion is whether there is a firmware upgradfe capability on the dongle already, and can this be done without modifing the hardware…
Late, but yes:
https://github.com/BastilleResearch/nrf-research-firmware/tree/02b84d1c4e59c0fb98263c83b2e7c7f9863a3b93/prog/usb-flasher