Hackaday Prize Entry: An Interface For The Headless Linux System

Connecting a headless Raspberry Pi to a wireless network can be quite a paradoxical situation. To connect it to the network, you need to open an SSH connection to configure the wireless port. But to do so, you need a network connection in the first place. Of course, you can still get command-line access using a USB-to-UART adapter or the Pi’s ethernet port – if present – but [Arsenijs] worked out a much more convenient solution for his Hackaday Prize entry: The pyLCI Linux Control Interface.

His solution is a software framework written in Python that uses a character display and buttons to make a simple hardware interface. This allows you to configure all important aspects of a Raspberry Pi – or any other Linux SBC – from a tidily organized click-and-scroll menu. [Arsenijs] implemented a whole bunch of useful tools: There’s a network tool to scan and connect to WiFi networks. A systemctl tool that lets you manage the services running on the system, which is especially helpful when you need to restart a stuck service. A partition tool helps with viewing and unmounting mass storage devices. He’s even planning to add a filesystem browser.

With his Open Source project, [Arsenjs] aims to shorten the development time for embedded projects by taking out the efforts of implementing the basic interface functions from scratch. Indeed, there are countless scenarios, where a basic display interface can be of great value. Given the great project documentation and the fact that this can work with virtually any Arduino or Raspberry Pi LCD-pushbutton-hat or shield, we’re sure this is going to be used a lot. Enjoy the video!

[Edit: A few corrections according to information provided by the project owner have been made.]

The HackadayPrize2016 is Sponsored by:

17 thoughts on “Hackaday Prize Entry: An Interface For The Headless Linux System

    1. I can fully see value in a ‘craft interface’ for a headless network device. if it dhcp’s to get an addr, yes, I DO like seeing it on the lcd. yes, I really truly do. ;)

      on my gps strat-1 rpi box, I have an lcd display that cycles around and shows the time, gps stats, uptime, so on. lcdproc simple stuff but I never have to wonder what its ip is or even if its got an addr.

      I’m doing a music server, now, too; and that will also have a small display (maybe those common oled i2c 128×64 displays) that will show its boot status, its ip-addr and some other simple status.

      truly headless servers are annoying. I aint got time for that shit.

    2. That covers only a small part of what pyLCI can do. It also can show your network addresses, restart services, list USB devices and so on and so on. Not so much you can do by editing configuration files.

    1. Because otherwise you’d need to configure it each time something changed. For example, you are somewhere far from your home and need to connect to a wireless network. Right now, you can connect your Pi to an open network or to a saved encrypted network using just pyLCI. If you need to connect to an unknown secured network, you can connect your Pi to an open network (say, your smartphone’s) and enter the credentials, which your Pi will then remember and be able to connect to that secured network. S, Soon, I’m adding input UI elements so that you’ll be able to input passwords for secured networks without SSH’ing at all.

      1. I understand that in some scenarios this might be useful, heck, I could use it sometimes for my MPD-based in-car Pi myself…

        Still, in the scenario you describe, wouldn’t it be possible to script Pi in a way that, if a specific network (i.e. your smartphone’s access point, which could also be secured) is present, it downloads a specific file from your phone and uses it as credentials for the other secured network? Just wondering…

        1. No reason that’d be impossible. Would it be a better solution in case of this single problem? Yes. However, pyLCI is not made to solve this single problem. You might want to check your IP address after you’ve connected, for example, and it isn’t easily solved with configuration files. You can find another solution for that, of course, but so far adding yet another application for pyLCI is easier, and there are plenty of them for solving the most important problems – for example, plug&playing HDMI displays with the correct resolution and unmounting mounted drives.

  1. Hi guys!

    First of all, it’s not a HAT =) It’s a software framework that accomodates button&display shields, HATs and displays&buttons in general. It’s meant to be DIYed, and it can be added quite cheaply to your projects – by being not limited to any hardware (except for the temporary limitation of using HD44780-compatible displays). You just configure the appropriate drivers for the devices you’re using and it’s working. Worst case – you write your own drivers or request a driver to be added, I can help with this.

    Second thing is – it’s extensible. You can write applications for your projects if you need to, and I did my best to make it easy by documenting the necessary aspects. You’re not limited by the applications I’ve written =)

    Third thing is – there are more apps for this to come. Among the most important is MPD control, for example, but the development is going on. I plan on making this interface much more powerful and therefore useful.

        1. No worries, I didn’t get you wrong =) I hope this is useful on homebrew servers and such. At least, as soon as I add input UI elements, it’ll be much more suitable – you’ll be able to change all sorts of things, such as system settings and network settings in particular, service configuration files and wireless passwords =)

  2. I recently bought a Raspberry Pi 3, and I want to make it into a portable computer at minimal cost. My solution has been to use my phone as a terminal display, and I have a separate fold up keyboard. Everything talks Bluetooth, and the rPi 3 is configured so that the Bluetooth communications go to a virtual serial port of sorts. From the phone I use BlueTerm.

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.