A Library for Using Raspberry Pi Peripherals in User Space.
I originally wrote this library because I wanted to access peripherals from user space (i.e. from non-privileged, standard accounts). The widespread (ab)use of privileged accounts on the rPi was somewhat unsettling and didn’t sit right with me (blame that on working with unix/linux for 15 years). Particularly as I wanted to to have my rPi internet facing and thus would be exposed to the chaos that exists out there I really needed to be able to trust the rPi was not going to end up as a vector for attack.
I know the rPi is supposed to be a toy and so it shouldn’t matter that best practises are being dropped in preference for functionality but the reality is that isn’t true. rPi’s are being used to automate all sorts of things in peoples homes and businesses. Model A might have been a pain to network but they (nearly) all have nics now, they are networked and they are internet facing. IMHO Perhaps we need a raspbian fork that is security minded?
So here is a library that is designed for non-priviledged, standard user accounts. It does this by utilising linux kernel modules for the rPi peripheral hardware. Like all things there is a compromise – the level of functionality is reduced compared to direct hardware access – but for most purposes it can be negated by choosing your devices with linux compatibility in mind.
The library was developed using Arch Linux 4.1, Raspbian Jessie 4.1 and Raspbian Wheezy 3.18 on a modern Raspberry Pi 2 B.