THP Entry: A Wireless Bootloaders And Linux Build Systems

radioWith The Hackaday Prize, you’re not just limited to one entry. Of course it would be better to devote your time and efforts to only one project if you’re competing for a trip to space, but if you’re [Necromant], you might be working on two highly related project that are both good enough for The Hackaday Prize

[Necromant]’s first project is rf24boot, an over-the-air bootloader using the very cheap and very popular NRF24L01 2.4GHz wireless module. There have been many, many projects that add wireless bootloading to microcontrollers using XBees and the NRF24, but [Necromant] is doing something different with this project: he’s building in support for a wide variety of microcontrollers, that include the STM32, MSP430, PIC32, 8051, and of course AVR chips for that ever so popular Arduino compatibility.

The support of multiple microcontroller platforms is a result of [Necromant]’s other entry to The Hackaday Prize, Antares, the Linux kernel-like build system for microcontrollers. The idea behind Antares is to separate the writing of code from microcontrollers away from compiling and burning. Think of it as a giant makefile on steroids that works with everything, that also includes a few libraries for common projects.

Supported platforms for Antares include the popular aforementioned targets, and allow you to use any IDE you could possibly desire. emacs? Sure. Eclipse? Right on. Arduino? You’re a masochist. For a really great overview of Antares you can check out the Readme, or the post we did a year or so ago.

It’s all very cool stuff, and very easy to see the potential of what [Necromant]’s working on. Combining the two together, it’s almost a complete system for developing that Internet of Things we’ve been hearing about – uploading code to simple AVRs for simple sensors, and deploying significantly more complex code for your ARM-powered dishwasher or microwave.

7 thoughts on “THP Entry: A Wireless Bootloaders And Linux Build Systems

  1. Well, I’ve done this before, with serial bootloaders, using a (class 1) bluetooth dongle at PC side and a (class 1) serial bluetooth module at microcontroller side.
    Has a decent range, and works with every microcontroller that has a UART.
    Slightly more expensive than a nRF24L01+ module, but you don’t need special dongle at PC side, just a standard bluetooth will do.

    1. Well, price DOES make a big difference if you’re planning to plant a LOT of these wireless modules around your house for the lighting, home automation and etc. Besides – the usb2nrf modules turned to be dirt cheap – less than 5$ worth of components including the PCB (I managed to make it single-sided, so the PCB price is really low). But, for a board or two with no infrastructure you’re better off with bluetooth.

  2. p.s. You should be aware, that the rf protocol doesn’t use any form of encryption, leaving your microcontrollers wide open for hackers.
    Bluetooth has at least a weak password.

    1. Yeah, I know that. For the bootloader part I just implemented a simple bootlock jumper. When it’s on – it will jump directly to application, never firing the bootloader. Adding encryption will bloat the firmware a little, but can be easily implemented with a couple of hooks (I’ll add that in some next update, it’s not a top priority right now)
      The bootloader doesn’t do any transmissions on its own, unless instructed, so to hack it – you need to know precisely: that the bootloader is there and waiting for hello packet, 5 byte address, RF channel number, data rate (250KBPS, 1MBPS or 2MBPS). If you come up with a FAST tool to bruteforce all that stuff – please make sure you send it to HaD ;)
      And for the actual application… Well, I guess AES and GOST are both pretty good, and I prefer to do the crypto stuff with MCU. Who knows what backdoors we have out there in silcon ;)

  3. very nice project.
    but i dont see a pin connection diagram – how nRF24L01 connects to the mcu.
    btw, looks u are using software reset, instead of connecting a IO pin to the Reset (like that in Arduino). Right??

    anyway..very nice project!!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.