1 Comment

4 ways to connect your Raspberry Pi 4 to the internet

{}
June 26th, 2019

The just introduced Raspberry Pi 4 has delivered some much wished features: faster internet/network, a gigabit Ethernet connection, and faster USB, 2 USB 3.0 ports. This will open the door to a Raspberry Pi driven NAS solution that will offer high speed in combination with the new USB3 ports.

This post is about exploring the USB OTG  (On The Go) feature of the Raspberry Pi 4. We will find out if it’s possible to power and connect a RPI4 with just a USB cable.

Ethernet is easiest way to connect internet, the second is wireless, using WiFi. The new RPI4 offers dual-band 802.11ac wireless networking. Not as fast as the gigabit Ethernet internet, but it will offer speeds like 100 Mbps, around a 100Mb Ethernet connection. That’s quite speedy too.

The third way is using Bluetooth. Like connecting your laptop to a Bluetooth hot-spot on your phone. That will be a bit slower. Will try that later.

The fourth way is using a trick we know from the smallest Raspberry Pi, the Raspberry Zero. The Raspberry Pi 4 has a USB-C power connector, but that USB-C port is also an USB OTG connector, so the Raspberry Pi can be used as a USB Gadget: the USB port can switch USB states (MASTER/SLAVE or HOST/DEVICE) and be used like a keyboard or mouse, or USB Ethernet modem.

Actually you can power and connect to a Raspberry Pi 4 with just an USB-cable. I tried it with the new Raspbian Buster and it’s working fine. I used the same Samsung cable I used for my Zero (and phone), added an 1 euro micro-USB to USB-C adapter, and it’s just working fine. It seems my laptop is offering enough power for a headless, and armless Pi.

To enable OTG networking, add this to `/boot/config.txt`:

# enable USB OTG
dtoverlay=dwc2

Then add this to `/boot/cmdline.txt` after rootwait:

modules-load=dwc2,g_ether

Reboot your Raspberry pi and convert the new wired connection to `shared` in the connection manager on your laptop (e.g. Ubuntu 18.04), and connect to your new Raspberry Pi 4.

It will have an IP like: 10.42.0.xxx.

If you have added  a empty file `ssh` to the boot sector of your SD card touch /boot/ssh, the Pi will start with SSH enabled.

So you can connect from your laptop with:

ssh pi@raspberrypi.local

For more details, see these posts Connecting to a Raspberry Pi Zero with just an USB cable (I) or Connecting to a Raspberry Pi Zero with just an USB cable (II)

I wonder if it will be possible to boot the Raspberry Pi 4 entirely over USB, without a SD card, like the RPI Zero. Not at the moment though.

5 Comments

How to check the Signing Certificate on an Android app / apk.

{}
January 3rd, 2019

If you own a Android Phone, and you want to use Signal instead of Whatsapp or Telegram for privacy matters, and, for the same privacy matters, you don’t have a Google Account on your phone, or you don’t use Google Play but the free F-Droid, there is a solution. You can download the Signal APK from their website: https://signal.org/android/apk/

They give a warning:

Advanced users with special needs can download the Signal APK directly. Most users should not do this under normal circumstances.

What are normal circumstances these days? You can’t trust Facebook anymore, maybe you can trust Google, but you don’t wanna trust Google, because trusting Google is telling Google where you are, what you do, what you say, what and who you see and who your friends are.

It’s not a matter of trust, it’s a matter of privacy and decency that you don’t do that.

So downloading the Signal APK is probably what you should do these days. But how to be sure you download the real one?

The websites tells you to verify the signing certificate on the APK matches this SHA256 fingerprint. Unfortunately they don’t tell you how to do that.

Verify the signing certificate on the Signal APK.

This one-liner will show you the SHA256 Fingerprint that has to be checked:

unzip -p Signal-website-release-4.31.6.apk META-INF/SIGNAL_S.RSA > /tmp/tmp.cert ; keytool -printcert -file /tmp/tmp.cert

You get this output:

Owner: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Issuer: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
Serial number: 4bfbebba
Valid from: Tue May 25 17:24:42 CEST 2010 until: Tue May 16 17:24:42 CEST 2045
Certificate fingerprints:
SHA1: 45:98:9D:C9:AD:87:28:C2:AA:9A:82:FA:55:50:3E:34:A8:87:93:74
SHA256: 29:F3:4E:5F:27:F2:11:B4:24:BC:5B:F9:D6:71:62:C0:EA:FB:A2:DA:35:AF:35:C1:64:16:FC:44:62:76:BA:26
Signature algorithm name: SHA1withRSA
Subject Public Key Algorithm: RSA (1024)
Version: 3

As you can see the SHA256 is the same fingerprint as on the Signal download page.

It’s verified. The Signal apk is safe to use now.

UPDATE 2022 (see new blogpost)

No Comments

Keeping the old TinyMCE editor while upgrading to WordPress 5.0

{}
December 30th, 2018

WordPress 5 has introduced a new block editor. Playing with the layout is easier this way, but on the other hand, writing a new post should not take more time than typing the text. Layout should be in the theme.

I guess competition from other website-hosting companies like wix.com, yola.com, weebly.com and jimdo.com is the culprit here. They all offer drop and drag editors for layout. No need for any knowledge of HTMl and CSS, or PHP. A noob should do the job apparently. And now WordPress is following. Designing without a developer is the new thing.

Not sure if I like that, WordPress has better performance with a minimum of plugins, and is CSS not handled better in CSS files?

If you’re used to the old, and why not, it’s working fine, just add this to your function file:

add_filter('use_block_editor_for_post_type', 'atys_disable_block_editor');
function atys_disable_block_editor($use_block_editor) {
return false;
}

The new block editor is another example that progress is not necessarily an improvement for all. Some will be scared by all the changes, speaking for myself: I think I will switch to a markdown editor sooner or later.

Less is more. For now, the old editor is OK.

No Comments

Fixing the network after upgrading to Ubuntu 18.04 LTS from 16.04 LTS

December 18th, 2018

Just updated 16.04LTS to 18.04LTS, went easier and smoother than expected.

Under the hood there are major changes in Ubuntu, I decided to stick to Unity rather then the new Gnome 3, it’s much smoother on older hardware. You only change the setting at login once and you done.

The only nasty thing: DNS (Pi-Hole) was not working. I could fix that by manually setting the DNS server in /etc/resolv.conf from `nameserver 127.0.0.53` to the DNS of my router, but that would not persist a restart.

To get info about your network and DNS:


systemd-resolve --status

Link 1 (eth0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no

Current scopes is none, but it should be DNS

Seems there was something wrong with the NetworkManager. Somehow in the past I’ve manually edited `/etc/NetworkManager/NetworkManager.conf` file. Can’t remember when I did that, could be years ago, Ubuntu 10.04 or something ;).

I had to comment out the line that explicitly set `no-auto-default`, meaning don’t let the NetworkManager create a default wired connection for my ethernet card. 

[main]
...
#no-auto-default=<mac-adress>
...
[ifupdown]
managed=false

After commenting it out, NetworkManager could create a default connection and after restart (the daemon), everything was OK. DNS was working.

systemd-resolve --status
Link 1 (eth0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no

As you can see DNS is now working

Maybe this can help you, if you experience the same troubles.

No Comments

How to find your IPv4 and IPv6 ip-addresses?

December 7th, 2018

How to check your IPv4 and IPv6 ip-adresses on the command line

Sure you can start up your browser and use Google to find a suitable website, but why not keep it simple and use the command line for this trivial task. Fire up a terminal and type:

> my_ip
> 2001:db8:85a3::8a2e:370:7334
> 172.16.254.1

Above IP-addresses are bogus, but you got my drift. To do this simply create the following bash script:

#!/bin/bash
# bin/my_ip

curl -6 v6.ifconfig.co
curl -4 v6.ifconfig.co

It will first output your IPv6 address.  If you don’t have one, it it will tell you:

> curl: (7) Couldn't connect to server
> xx.xx.xx.xxx

The script uses the great curl application with the simple -6 and -4 flags, to connect with IPv6 and IPv4.

Of course you could extend the script a bit to include geographical information:
#!/bin/bash
# bin/my_ip

curl -6 v6.ifconfig.co
curl -6 v6.ifconfig.co/city
curl -6 v6.ifconfig.co/country
curl -4 v6.ifconfig.co
curl -4 v6.ifconfig.co/city
curl -4 v6.ifconfig.co/country

Now you will get info about your city and country as well.
No Comments

How to Make the Music Player Daemon (MPD) Autoplay on a Raspberry Pi

{}
November 13th, 2018

Music Player Daemon (MPD) is a terrific open source music player and maintains a good organized library of your music in an efficient database. MPD is a server so you need a client. That can be your laptop, to your phone, your browser, your whatever, or you can run a client on your Rpi locally (mpc). Or all together.

It does run fine on the cheapest raspberry pi, so your ready to go for 5 euro. The Pi only has a high quality HDMI output, for older Hifi systems with analogue connections  you need something like the HifiBerry.

MPD uses much less CPU then running Kodi, 4% instead of 40% on the original Raspberry Pi.

Furthermore you can put your music on an external USB stick or  NAS with Linux NFS or the slightly inferior Microsoft Windows Samba shares.

If you haven’t installed MPC yet, do that first:

sudo apt install mpc

Normally MPD will resume play after shutting down, but to make MPD auto-play always simply add this to your systemd.service  file:

ExecStartPost=/usr/bin/mpc play

How to do that? Just edit the file:

sudo vi  /etc/systemd/system/multi-user.target.wants/mpd.service

And add it under the line starting with `ExecStart`

...
[Service]
EnvironmentFile=/etc/default/mpd
ExecStart=/usr/bin/mpd --no-daemon $MPDCONF
ExecStartPost=/usr/bin/mpc play
....

Save it, stop MPD, and reboot your pi. And the music will play 😉