And if you want it too, there is the how-to available on the RaspberryPi forum.
Current generations of RaspberryPi single board computers (from 3 up) already got WiFi on-board. Which is great and can be used, in combination with the internal ethernet or even additional network interfaces (USB) to create a nice wired/wireless router. This is what this RaspAP project is about:
This project was inspired by a blog post by SirLagz about using a web page rather than ssh to configure wifi and hostapd settings on the Raspberry Pi. I began by prettifying the UI by wrapping it in SB Admin 2, a Bootstrap based admin theme. Since then, the project has evolved to include greater control over many aspects of a networked RPi, better security, authentication, a Quick Installer, support for themes and more. RaspAP has been featured on sites such as Instructables, Adafruit, Raspberry Pi Weekly and Awesome Raspberry Pi and implemented in countless projects.
This really is going to be very useful while on travels. I plan to replace my GL-INET router, which shows signs of age.
Have you ever wanted a full control over your communication tool ? #SnapOnAir #BlaspBerry v2. A true Qwerty computer KB. @Raspberry_Pipwav robot on Twitter
zero W. @Quectel
3G cellular chip. #Lora RFM95 chip. All opensource.
There’s a full twitter thread here. More pictures, more information.
And there’s a GitHub repository with some schematics, configurations and so on…
Preserving old software is all about storing it and keeping it running.
With the most important part being the later one. The best way to keep things running is by emulating the old and obsolete hardware as accurate as possible.
In computing, an emulator is hardware or software that enables one computer system (called the host) to behave like another computer system (called the guest). An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation refers to the ability of a computer program in an electronic device to emulate (or imitate) another program or device.Wikipedia: Emulator
There are a lot of different types of emulators for all sorts of purposes.
There’s things like bochs which is effectively emulating the hardware of a PC on chip-level and can run virtually anywhere:
Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the market yet.bochs: the Open Source IA-32 Emulation Project
Emulators of game consoles are alike that – they are emulating the whole system hardware and are able to run original and unchanged code by replicating the exact hardware. Sometimes more and sometimes less exactly.
Hardware emulation in itself an extremely interesting field of software engineering. There’s the hard way to emulate everything accurately (and slowly) by doing what the actual old hardware would have done but maybe in software (or even in replicated hardware).
In regards of old game console hardware there are even now specialized distributions of lots of hardware/system emulators available for specific and readily available hardware like the RaspberryPi. Some of them recently have gotten some nice updates.
There are new micro-projectors coming and they are looking good. After the first availability of really small and low-power but enough-light LED projectors (see here) manufacturers have apparently added a laser to the equation.
It is said that…
Unlike traditional projectors that constantly need to be focussed, the Nebra AnyBeam picture is always perfect. You can project onto curved or irregular surfaces with ease – perfect if you want to use it on the fly, or if you want to try your hand at a bit of projection mapping!
This thing will be available, according to the Kickstarter, as a all-in-one package with power and HDMI inputs. It’s got 720p inputs. Well. Well really?
And it will be available to the maker market as a RaspberryPi Hat…
We all know this situation: We have huge screens around and want them to become digital signs that display all sorts of information automatically – maybe even video.
Back in 2012 I already had the need and just recently in an entirely different context the same requirement crossed my way.
Or you can take a RaspberryPi and Display you already got and repurpose them.
With the ready-made SD card image for the Pi you simply boot up the Pi, make Internet available to it and use the info-beamer dashboard to onboard the Pi there with the PIN shown by the Pi.
The next thing you know is that you can send content from the web dashboard on info-beamer to the Pi.
I had to solve a problem. The problem was that I did not wanted to have the exact same session and screen shared across different work places/locations simultaneously. From looking at the same screen from a different floor to have the option to just walk over to the lab-desk solder some circuits together and have the very same documents opened already and set on the screens over there.
One option was to use a tablet or notebook and carry it around. But this would not solve the need to have the screen content displayed on several screens simultaneously.
Also I did not want to rely on the computing power of a notebook / tablet alone. Of course those would get more powerful over time. But each step would mean I would have to purchase a new one.
Then in a move of desperation I remembered the “old days” when ThinClients used to be the new-kid in town. And then I tried something:
I just recently had moved all house server infrastructure over to Linux and Docker. So what would keep me from utilizing the computing power of that one beefy server in the basement to host all of my desktop needs?
It turns out: Nothing really. Docker is well prepared to host desktop environments. With a bit of tweaking and TigerVNC Xvnc I was able to pre-configure the most current Ubuntu to start my preferred Mate desktop environment in a container and expose it through VNC.
If you wanted to replicate this I would recommend this repository as a starting point.
Even better I found that the RaspberryPi single board computers come with a free pre-licensed and accelerated version of RealVNC.
So I took one of those RaspberryPis, booted up the Raspbian Desktop lite and connected to the dockers VNC port. It all worked just like that.
The screenshot above holds an additional information for you. I wanted sound! Video works smooth up to a certain size of the moving video – after all those RaspberryPis only come with sub Gbit/s wired networking. But to get sound working I had to add some additional steps.
First on the RaspberryPI that you want to output the sound to the speakers you need to install and set-up pulseaudio + paprefs. When you configure it to accept audio over the network you can then configure the client to do so.
In the docker container a simple command would then redirect all audio to the network:
pax11publish -e -S thinclient
Just replace “thinclient” with the ip or hostname of your RaspberryPI. After a restart Chrome started to play audio across the network through the speakers of the ThinClient.
Now all my screens got those RaspberryPIs attached to them and with Docker I can even run as many desktop environments in parallel as I wish. And because VNC does not care about how many connections there are made to one session it means that I can have all workplaces across the house connected to the same screen seeing the same content at the same time.
And yes: The UI and overall feel is silky smooth. And since VNC adapts to some extend to the available bandwidth by changing the quality of the image even across the internet the VNC sessions are very much useable. Given that there’s only 1 port for video and 1 port for audio it’s even possible to tunnel those sessions across to anywhere you might need them.
In 2017 Texas Instruments had released a line of cheap industry grade LED projectors meant to be used in production lines and alike:
DLP® LightCrafter Display 2000 is an easy-to-use, plug-and-play evaluation platform for a wide array of ultra-mobile and ultra-portable display applications in consumer, wearables, industrial, medical, and Internet of Things (IoT) markets. The evaluation module (EVM) features the DLP2000 chipset comprised of the DLP2000 .2 nHD DMD, DLPC2607 display controller and DLPA1000 PMIC/LED driver. This EVM comes equipped with a production ready optical engine and processor interface supporting 8/16/24-bit RGB parallel video interface in a small-form factor.Texas Instruments
And of course this got picked up by the makers. In the hands of people like MickMake who designed an adapter PCB for the RaspberryPi Zero W to the smallest projector available from TI.
After I had learned about the existence of those small projectors I had to get a couple and try for myself. There would be so many immediate and potential applications in our house.
After having them delivered I did the first trial with just a breadboard and the Raspberry Pi 3.
The projector module has a native resolution of 640×360 – so not exactly high-pixel-density. And of course if the image is projected bigger the screen-door effect is quite noticeable. Also it’s not the brightest of images depending on the size. For the usual use-cases the brightness is definitely sufficient.
- too low brightness for large projection size – no daylight projection
- low resolution is an issue for text and web content – it is not so much of an issue for moving pictures as you might think. Video playback is well usable.
- flimsy optics that you need to set focus manually – works but there is no automatic focus or alike.
- very low powered – 2.5A/5V USB power supply is sufficient for Pi Zero + Projector on full brightness (30 lumen)
- low brightness is not always bad – one of our specific use cases requires an as dim as possible image with fine grain control of thr brightness which this projector has.
- extremely small footprint / size allows to integrate this device into places you would not have thought of.
- almost fully silent operation – the only moving part that makes a sound is the color wheel inside the DLP module. You have to put your ear right onto it to hear anything.
- passive cooling sufficient – even at full brightness an added heat sink is enough to dissipate the heat generated by the LED.
So what are these use cases that require such a projector you ask?
Night status display:
For the last 20+ years I am used to sleep with a “night playlist” running. So far a LED TV was used at the lowest brightness possible. Still it was pretty bright. The projector module allows to dim the brightness down to almost “moon brightness” and also allows to adjust the color balance towards the reds. This means: the perfect night projection is possible! And the power consumption is extremely low. A well watchable lowest brightness red-shifted image also means much lower temperatures on the projector module – it’s crazy how low powered, low temperature.
Season Window Projection:
Because the projector is small, low-powered and bright enough for back-lit projection we tried and succeeded with a Halloween window projection scene the last season.
It really looks funky from the outside – funky enough to have several people stop in front of the house and point fingers. All that while power consumption was really
House overall status projections:
When projecting information is that cheap and power efficient it really shines when used to display overall status information like house-alarm status, general switch maps, locations of family members and so on. I’ve left those to your imagination as these kind of status displays are more or less giving away a lot of personal information that isn’t well suited for the internet.
I am a frequent podcast live-stream listener. And being that I am enjoying the awesome service called xenim streaming network.
Any Podcast producer can join the xsn and with that can live-stream his own Podcast while recording. It’s CDN is based on voluntarily provided resources and pretty rock-solid as far as my experience with it goes.
Since I am a frequent user of this – and I’ve got that gorgeous SONOS hardware scattered around my house – I thought I need to have that service integrated into my SONOS set.
The SONOS system knows the concept of “Music Services”. There are quite a lot of them but xsn is missing. But SONOS is awesome and they got an API!
Unfortunately the API documentation is hidden behind a NDA wall so that would be a no-go. What’s not hidden is what the SONOS controllers have to discuss with all the existing services. Most of the time these do not use HTTPS so we’re free to listen to the chatters. I did just that and was able, for the sake of interoperability, to reverse engineer the SONOS SMAPI as far as it is necessary to make my little xsn Music Service work.
As usual you can get the source-code distributed freely through Github. If you’re not into that sort of compiling and programming things, you are invited to use my free-of-charge provided service. To set it up on your home SONOS just follow these simple steps:
Step 1: Start your SONOS Controller Application and find out the IP address of your SONOS.
Click on “About My Sonos System” and check the IP address written next to the “Associated ZP”.
Step 2: Add the xsn Music Service.
By opening a browser window and browsing to: http://<your-associated-zp-ip>:1400/customsd.htm
When you’re there – fill out the fields as below. The SID is either 255, or if you used that previously, something between 240-253. The service name is “xenim streaming network”. The Endpoint URL and Secure Endpoint URL both are http://xsn.schrankmonster.de/xsn
Set the Polling interval to 30 seconds. Click on the Anonymous Authentication SOAP header policy and you’re good to go. Click on “send” to finish.
Step 3: Add the new Music Service to your SONOS Controller.
Click on “Add Music Services” and click through until you see “xenim streaming network”. Add the service and you’re set!
p.s.: It’s normal that the service icon is a question mark.
Step 4: Enjoy Live Podcasts!
I am using an external podcast download tool to stay updated on all podcasts I subscribed to. For this purpose SubSonic is a good choice – actually for a lot more also.
One of the quirks of the SONOS products is that Podcasts are not really well supported. In fact there is no support at all.
So I wrote a tool that extends the SONOS players with the functionality to “remember” play positions within audiobooks and podcasts. Now what’s left to properly have podcasts supported is a view of the most recently updated podcasts. Wouldn’t it be nice to have a “Folder View” in the SONOS controller of what’s new across all the different podcasts you are subscribed to?
Now here’s the trick:
Use a small script on any RaspberryPi in the house to dynamically create hardlinks to the podcasts files in a “Recently Updated Podcasts” folder.
The script is something like this:
find /where-your-podcasts-are/ -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort | tail -n 25 | cut -c 32- | sed -e “s/^/ln \”/” -e “s/$/\”/” -e “s/$/ \”\/recentPodcasts\/\”/” | sh
This short line will go through all folders and subfolders in /where-your-podcasts-are/ and then create Hardlinks in /recentPodcasts to the most recent 25 files.
That way, and when /recentPodcasts/ is made accessible to your SONOS controllers, you’ll have something like this:
After setting up Boblight on two TVs in the house – one with 50 and one with 100 LEDs – I’ve used it for the last 5 months on a daily basis almost.
First of all now every screen that does not come with “added color-context” on the wall seems off. It feels like something is missing. Second of all it has made watching movies in a dark room much more enjoyable.
The only concerning factor of the past months was that the RaspberryPi does not come with a lot of computational horse-power and thus it has been operating at it’s limits all the time. With 95-99% CPU usage there’s not a lot of headroom for unexpected bitrate spikes and what-have-you.
So from time to time the Pis where struggling. With 10% CPU usage for the 50 LEDs and 19% CPU usage for the 100 LEDs set-up there was just not enough CPU power for some movies or TV streams in Full-HD.
So since even overclocking only slightly improved the problem of Boblight using up the precious CPU cycles for a fancy light-show I started looking around for alternatives.
“Hyperion is an opensource ‘AmbiLight’ implementation controlled using the RaspBerry Pi running Raspbmc. The main features of Hyperion are:
- Low CPU load. For a led string of 50 leds the CPU usage will typically be below 1.5% on a non-overclocked Pi.
- Json interface which allows easy integration into scripts.
- A command line utility allows easy testing and configuration of the color transforms (Transformation settings are not preserved over a restart at the moment…).
- Priority channels are not coupled to a specific led data provider which means that a provider can post led data and leave without the need to maintain a connection to Hyperion. This is ideal for a remote application (like our Android app).
- HyperCon. A tool which helps generate a Hyperion configuration file.
- XBMC-checker which checks the playing status of XBMC and decides whether or not to capture the screen.
- Black border detector.
- A scriptable effect engine.
- Generic software architecture to support new devices and new algorithms easily.
Especially the Low CPU load did raise interest in my side.
Setting Hyperion up is easy if you just follow the very straight-forward Installation Guide. On Raspbmc the set-up took me 2 minutes at most.
If you got everything set-up on the Pi you need to generate a configuration file. It’s a nice JSON formatted config file that you do not need to create on your own – Hyperion has a nice configuration tool. Hypercon:
So after 2 more minutes the whole thing was set-up and running. Another 15 minutes of tweaking here and there and Hyperion replaced Boblight entirely.
What have I found so far?
- Hyperions network interfaces are much more controllable than those from Boblight. You can use remote clients like on iPhone / Android to set colors and/or patterns.
- It’s got effects for screen-saving / mood-lighting!
- It really just uses a lot less CPU resources. Instead of 19% CPU usage for 100 LEDs it’s down to 3-4%. That’s what I call a major improvement
- The processing filters that you can add really add value. Smoothing everything so that you do not get bright flashed when content flashes on-screen is easy to do and really helps with the experience.
All in all Hyperion is a recommended replacement for boblight. I would not want to switch back.
Source 1: Setting up Boblight
Source 2: https://github.com/tvdzwan/hyperion/wiki/Installation
Airplay allows you to conveniently play music and videos over the air from your iOS or Mac OS X devices on remote speakers.
Since we just recently “migrated” almost all audio equipment in the house to SONOS multi-room audio we were missing a bit the convenience of just pushing a button on the iPad or iPhones to stream audio from those devices inside the household.
To retrofit the Airplay functionality there are two options I know of:
1: Get Airplay compatible hardware and connect it to a SONOS Input.
You have to get Airplay hardware (like the Airport Express/Extreme,…) and attach it physically to one of the inputs of your SONOS Set-Up. Typically you will need a SONOS Play:5 which has an analog input jack.
2: Set-Up a RaspberryPi with NodeJS + AirSonos as a software-only solution
You will need a stock RaspberryPi online in your home network. Of course this can run on virtually any other device or hardware that can run NodeJS. For the Pi setting it up is a fairly straight-forward process:
You start with a vanilla Raspbian Image. Update everything with:
sudo apt-get update
sudo apt-get upgrade
Then install NodeJS according to this short tutorial. To set-up the AirSonos software you will need to install additional avahi software. Especially this was needed for my install:
sudo apt-get install git-all libavahi-compat-libdnssd-dev
You then need to get the AirSonos software:
sudo npm install airsonos -g
After some minutes of wait time and hard work by the Pi you will be able to start AirSonos.
And it’ll come up with an enumeration of all active rooms.
And on all your devices it’ll show up like this:
“The internet of things” is a buzzword used more and more. It means that things around you are connected to the (inter)network and therefore can talk to each other and, when combined, offer fantastic new opportunities.
So NodeRed is a NodeJS based toolset that allows you to create so called “flows” (see picture above). Those flows determine what reacts and happens when things happen. Fantastic, told you!
When you want to compile some C# code using MONO on Linux on your RaspberryPi and you encounter this strange error message:
error CS0589: Internal compiler error during parsingSystem.FormatException
You need to do:
- Update your Debian by running:
sudo apt-get upgrade
sudo apt-get update
- Upgrade your RaspberryPi firmware:
- Reboot your RaspberryPi
- Retry compiling – should work now.
The reason for Mono to crap out like above: Previous Mono versions and RaspberryPi firmwares where not compatible due to one side using HardFP and the other not.
I tried a couple of times to compile NodeJS on the RaspberryPi and failed miserably. It not only takes ages to compile NodeJS on the Pi. After the successful compile and install run most of the time running it just results in an error message “Illegal Instruction” or “Ungültiger Maschinencode”.
Now there’s a pretty easy way to do that on your own. Run these commands:
After the download is finished successfully you can install it by running this as root:
sudo dpkg -i node_latest_armhf.deb
This will have installed a relatively new NodeJS built as well as NPM on your RaspberryPi. Don’t panic when NPM is slower than you would expect… just be patient.