raspberry pi 2: reflections going forward

“Raspberry Pi 2 Model B v1.1” by Multicherry. Licensed under CC BY-SA 4.0

My work with the Raspberry Pi started with the original Raspberry Pi 1 model B, the version that came with just two USB ports and the most amount of RAM at the time, 512MB. I purchased the B+, and then earlier this year, the Raspberry Pi 2 Model B. During all that time I’ve run some distribution of Linux on it; Arch first and for the most amount of time, then Raspbian when Arch suddenly corrupted itself after what turned out to be an ill-advised update on the B+.

If you look at the entries in this blog under Raspberry Pi you’ll note that it’s been for the most part light weight and a way to get to know how the hardware and software work together. I’ve looked up and followed along, making changes necessary for it to work on my end. I’ve not published anything unique that advanced the use of the Raspberry Pi. My excuses boil down to lack of time to really research and then apply what I’ve learned. I’ve got all sorts of big ideas, but just need to figure out how to make them real.

To that end I’ve started to look at the latest releases of operating systems available for the latest Raspberry Pi 2. Before the trip I managed to install the latest Arch, Raspbian, and Windows 10 for IoT. Here’s a quick rundown on what I discovered.

Arch

The latest Arch Linux for ARM has a page devoted to installing Arch directly onto a micro SD card for the Raspberry Pi 2, using Arch Linux as the tool bench. In my case I used my Samsung R580 notebook running Ubuntu 15.04. The only tool I needed to add via apt-get was bsdtar. Otherwise the directions given for the Arch environment worked identically on Ubuntu (taking micro SD card device differences into account).

Once the installation process was finished, I put the micro SD card into the RPi 2 and watched it book into a text console. Nothing out of the ordinary in that, and in a way I prefer text over a GUI. My only complaint with the latest Arch is the lack of out-of-the-box WiFi support for the most common WiFi dongles. I had to install WiFi support after my first initial installation of Arch Linux nearly two years ago. Here I am with the latest and I find I’ve got to do that same all over again. My main reason for looking at Arch is its relatively lean footprint, but lack of WiFi support is just a bit too lean. It’s annoying to fix this issue, especially as WiFi networking on the Raspberry Pi is a big feature, two years since the last time is a long time, and when it’s not there out of the box, it’s a big issue.

Raspbian

The latest Raspbian image was installed using my Ubuntu system and the ‘dd’ method for copying the image onto another micro SD card. Once booted, Raspbian will walk you through an initial configuration and expand the file system, consuming the rest of the card. It now boots immediately into a graphical desktop. This is all well and good, but even with a quad-core ARM processor and 1GB of memory, the GUI still taxes the Raspberry Pi 2. This so-called taxing shows as a jitteriness of the mouse cursor as it moves across the screen, among other issues.

I give points to the distribution for fully recognizing my Apple USB keyboard without having to perform any kernel-level configurations, and it recognized both of my WiFi dongles and thus joined the network at boot. For a distribution where you want the greatest assurance it will come up and be usable by an absolute novice to the Raspberry Pi, the current Raspbian distribution can’t be beat. To quote Apple, “It Just Works.”

But I’m still not quite happy with it…

Windows 10 IoT

This was the most sophisticated, and in the end, the most disappointing of the three. I’m glad I gave it a spin, but I would never use it for my own work nor can I recommend it for anyone else to use.

Microsoft has a page to help you get started here. I chose to download an ISO image and to install the tools necessary to flash a micro SD card with the IoT image that comes bundled with that ISO. Once installed on the Raspberry Pi, the Pi booted into Windows 10 with absolutely no problem. The problems came later when it turned out it wouldn’t work with either of the two WiFi USB dongles I’ve been using with Linux ever since the original Raspberry Pi B was purchased.

I spent more time than I cared to slumming through the forums, but no-one seemed to know how to get WiFi working. After about an hour of trying various so-called solutions I shut it down and deleted everything. Yes, I could have plugged the Pi 2 into an open network port on my home router, but I still had no guarantee I would find the proper drivers to make WiFi work. I know how to get all that to work under various Linux distributions. The bigger issue is the requirement to have a desktop Windows system in order to develop for the Raspberry Pi 2. As I’ve written about here you can do some serious and sophisticated work natively on the Raspberry Pi, reaching back to a desktop/laptop only when the development needs are fairly serious. I don’t want to be forced to do this out of the gate. I lived that development life back in the 1990s with Wind River’s VxWorks. While that was fine back then, I don’t want to go back to that, especially now. Even the Beagle Bone Black, which requires a laptop to bootstrap it’s development tools, has everything local to the BBB, and only requires you use a browser.

Unless it changes drastically I’m done with Windows 10 IoT.

Conclusions

There’s a lot that has happened over the last two years, especially with regards to security and encryption. I knew the Internet had devolved into a dangerous place, but I didn’t know how dangerous until the leaks from Edward Snowden and other’s he’s inspired. That has in turn motivated me to think about best practices for securing an internet-of-things device such as the Raspberry Pi 2, and how best to encrypt data both at rest on the device as well as across the wire into and out of the Pi. I’ll have more to write about later, but for the present, I can’t approach this with the same naivete I did in the beginning.

raspberry pi b+ – arch linux update and future plans

Raspberry Pi B+
Beaglebone Black Rev C

Back in August I picked up two new little computers, the Raspberry Pi B+ and a Beaglebone Black Rev C. I moved my rolling Arch Linux for Arm from my older Raspberry Pi B to the B+. The Beaglebone came with Debian pre-installed.

Since receiving both boards I’ve had little time to work with them, either individually or as part of a larger project. As usual I had the best of intentions, but life interfered, and with the exception of just powering on the boards a bit and seeing if they worked, everything has been sitting in my big storage box for such items.

What makes this even more annoying for me is I also ordered three P8X32A-D40 Propeller chips, and even had one of them working in the Propeller developer’s board. The long-term goal has always been to integrate the RPi with the Propeller using an I2C channel. I had hoped to have everything working together before now. Both boards were ordered from Adafruit.

Software Update

I’ve gone and updated Arch Linux Arm for the Raspberry Pi. It runs fine on both the prior B and the current B+. I’ve created a compressed image and moved it up to my Google Drive location here. The compressed image is 1.6 GB compressed, and fits on an 8GB or larger SDHC card. I’ve switched from zip to compressed tar. The readme is here on Google Drive.

This may be the last Arch Linux release. Because the Beaglebone Black is pre-loaded with Debian, and because there is now a more current Raspbian (Debian-based) release for the Raspberry Pi, I’m looking at moving all my Raspberry Pi development to Raspbian in order to make the development environments on both boards as close as possible. This also fits in with my primary development system which runs Ubuntu 14.04.

Update

I installed Raspbian and booted into the system. Initial configuration was well thought out. On first boot you’re presented with a simple character-based menu. The first entry is to resize the active partition to use the entire micro SDHC card. I am using 16GB cards these days, and it was a pleasure to have the partition simply and cleanly repartitioned to use all 16GB. I had to use a separate Ubuntu utility to resize the Arch Linux partition to 8GB (that’s what I had at the time).

Right now my Raspbian installation boots into a simple command line environment. If I want the desktop I run startx, which boots the desktop into LXDE. I’m no fan of LXDE, and it looks like I’m still not. But I have to admit that it runs much faster and smoother than the first time I tried Raspbian. What’s most impressive about the latest Raspbian desktop is the latest Epiphany web browser. It isn’t perfect, but it’s still amazingly good on such minute hardware as the RPi B+. I’m suitably impressed with this iteration.