TeamViewer on a Raspberry Pi

For this project the customer wanted TeamViewer running on a Raspberry Pi Nano so that a programmer he hired from interstate could connect easily to get some scripts running. For the more tech savvy an SSH terminal connection is by far more solid and runs easily on a Pi Nano, but the configuration is harder as a port forward would have to be setup on the customers home or business router and then DNS resolution has to happen. In the end that set up would be more fault tolerant, but then again it depends on how you look at it.

TeamViewer has almost become an industry standard as it is generally fast, reliable and easy to set up. I’ve not done a speed test between TeamViewer and FreeNX, but for ease of use TeamViewer is great. It also bypasses the firewall using tunneling without compromising security.

Back to the job at hand. It turns out that the older older ARM chips found in the Nano and the Pi 1 do not support SIMD (Single Instruction Multiple Data). SIMD is a type of parallel computing involving vectors (beyond the scope of this article). Either way the ARM processors in the Pi3 have an architecture called NEON which supports SIMD.

After 4ish hours of flattening the OS, reinstalling Raspbian, hunting for the appropriate version of TeamViewer host for Linux and then figuring out what the spurious errors meant I finally realised the NEON SIMD issue above. I popped the SD card out of the Raspberry Pi Nano and put it in a Pi3 B+ and away it went. Mission accomplished.

An alternative to DynDNS and the like.

For the less technical

(Skip ahead if you already know the basics) DNS (Domain Name System) is a method of taking a computer and giving it a name on the web. For example our domain is I might have a laptop which I’ve called Manfred. To access it from anywhere in the world we’d like to type maybe in a web browser to access web software on manfred. comes to this website, but connects to the hypothetical computer called manfred. For technical reasons when the computer is on your home network you need something called dynamic host resolution to make this happen.

For the more technical

Sniffing around Bind9 trying to make my own dynamic DNS service I realised that Bind9 has a service called NSupdate. I’m not sure if it was there in the early naughties when I was setting up mail and DNS servers, but it’s here now. So the scripts I wrote are minimal and there’s no more hand editing of the zone files. Fantastic!! Especially if you’ve a server with a static IP address already. Nice one Bind9. The O’reillys books are still good for giving an overview of how it all works for those interested in giving it a crack.

RaspberryPi Raspbian OS image minimised for optical recognition company.

An engineering friend (Shervin Emami) was working on optical recognition softwade for a customer and his project worked well. Shervin asked if I could do the Operating System (OS) optimisation section to get the Raspbian Linux OS  down to below 2Gb for mass roll out purposes. The client had tried to do this himself, but was unable after many hours of trying. It took me several hours and there where a few quirks linked to Raspbian OS, but I finally nutted it out with a successful outcome.

Online software

Something that I am not comfortable with is the whole notion of online software. When I am writing code, I’d like to think that I am giving the end user something of quality which will be everlasting until a new better technology comes out. If I write some web based software and an end user enters all their hard work into it, shouldn’t they be able to access their work forever more?

With the current model which most coding companies are adopting, it is about renting the software for a monthly fee. If I ask them about using my data say 8 years later, but had stopped using the software, their answer is for me to resubscribe to the service and then I can access my data. But what if 8 years later management has changed and they no longer support the old data structures. Why should I have to pay again to access something that I created?

Also it’s not a capital expenditure whereby, your business pays down the initial outlay and then you can start to make more profit. Yes, I do understand that renting is often more cost efficient or profitable than buying in many situations, but I want the option to choose.

The other issue is that¬† I have to trust staff in another company that they will do the right thing, or they will know how to do the right thing. Problem here is that the definition of “the right thing” varies depending on who you’re talking to and who holds the keys to the gate., In this situation, if you are not comfortable with their service, you often can’t just fire them without losing your data. Often they will give you your database, but who can read a raw database?

As Matt Mullenweg mentioned in an interview recently, it’s kind of like buying a car whereby when you look in the engine bay and all you see is a black box which you’re not allowed to open, even though you paid for it. Now it’s a level worse in that the black box isn’t even in the car. There’s just a string hanging from some sort of sky hook which you pay a monthly fee for. When you stop paying your monthly fee, the string disconnects.

I understand I.P., but this just does not seem right. For me personally, I am looking for web based software I can host on my own web servers that I build and upgrade. I want an unrestricted licence once I’ve purchased it with a preference for being able to access the source code.

As much as this is a criticism of the current way things are, I have not escaped it. For instance, I do use online software like MYOB essentials, Fusion360 and Workflowy.

MYOB has saved me up to 4 hours per week because of it’s automatic transaction matching, but text matching is not such a complex piece of software to write. I am looking for something else now whereby if I close a particular business and want to see the accounts in 10 years time, I simply load the OS in a VM, install the accounting software and check what I need to. Or even better have it stored on a VM image and just boot it.