• Embedded,  Linux

    Adding a user space “power switch” to your embedded linux

    Is is always amazing to see how some very obvious features are missing from the linux kernel. Yesterday, for a project I am developing for a Dutch firm, I come across one of these “very obvious feature”: the option to switch on and off a device in the embedded linux board we’re using. The problem seemed to be quite frequent: you have a device connected to the internal USB bus (a wifi module, maybe?) and you want to switch it off completely when not in use. It is the only USB connection in that bus, a single power line is powering that device, and still you need to power the…

  • Embedded,  Linux,  uboot,  ubuntu

    Configuring Ubuntu to deal with an ARM board with U-Boot via USB

    Abstract We have a board on which an AllWinner ARM processor is running Linux. The bootloader is U-boot and we have to use the USB port to flash it. When flashing the device for the first time, after loading the bootloader via FEL protocol, we need to use tftp to load the SPL (Secondary program Loader) image and the uboot version for use with the spl. Unfortunately, a couple of issues in the default Ubuntu configuration prevent us from doing this apparently simple operation in a straight way, and we need to tweak some system configuration file. The issue After using the sunxi-fel tool to run the bootloader in memory,…

  • Code,  Embedded

    Pairing Bluetooth with no pin on Intel Edison

    It may seems strange for an IoT enabled device, but there's no obvious way to pair an Intel Edison through Bluetooth without accessing the shell. I spent different hours to do something that with Bluez4 took at most 4 minutes, including the research on Google. Here's what I did. Edison provides Bluez5 that reworks most of the tools using DBUS, so to make two quite frequent actions, like pairing a device without providing user intervention on the device, and registering a new bluetooth RFCOMM service, you need to interface with it, that isn't so obvious from C or C++. The second action can be done if bluetoothd is started with…