"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects." (Robert A. Heinlein)
Showing posts with label Raspian. Show all posts
Showing posts with label Raspian. Show all posts

Saturday, 3 March 2018

Sharing files on the Raspberry Pi Zero W


I eventually managed to find some time to continue working to my Pi-zero camera project. During initial tests I took advantage of Pi-Zero wireless interface and used “sftp" command in order to transfer files between Raspberry and desktop computer. A more suitable way of transferring files using USB, like real digital cameras, would be of course advisable.

Raspberry Pi Zero as mass storage

The Pi Zero USB port is directly connected to processor, unlike others Raspberrys using a on-board USB Hub. This, cheaper, solution means the Pi Zero can be configured to act as USB host, like a computer, or as a “USB gadget” like all cell-phones and digital cameras do. In order to activate such “USB gadget” mode some specific “dcw2” kernel modules must be enabled, in my specfic case the needed module is called “g_mass_storage”. I followed this simple guide from a Github user.
First I enabled DCW2 USB driver
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txtecho "dwc2" | sudo tee -a /etc/modules

then I created a virtual disk image to be mounted as mass storage and formatted if as a FAT32 disk.
sudo dd if=/dev/zero of=/usb-drive.img bs=1M count=1000sudo mkdosfs -F 32 /usb-drive.img
Once the Raspberry PI is conncted to a computer the mass storage can be enabledl ike this
sudo modprobe g_mass_storage file=/usb-drive.img stall=0 removable=1
and disabled with following modprobe command
sudo modprobe -r g_mass_storage
the same virtual disk can be availabe to Raspberri PI by mounting it
sudo mkdir /media/usb-drivesudo mount -o loop,rw /usb-drive.img /media/usb-drive/
of course the same virtual disk cannot be both available as mass storage drive and mounted on Raspberry at the same time, since it could lead to disk corruption. The camera software will have so to manage the switch between two modes.

Wednesday, 17 January 2018

New toy on the desk: Raspberry PI zero W and Raspberry Camera

Just before Christmas I have been to an electronics and surplus fair where I bought myself, among other things, a new Raspberry family “thing”. I started with a vague idea of building my very own “hackable” camera. I didn't have, and still don't, have a definitive idea of how it must be or what to do with it ... just it must be hackable i.e. I must be able to reprogram it once I need it for something else. I so bought a Raspberry Pi Zero kit, including the official withe-red case heath sink and male pin strip, and a 8 M pixel Pi Camera.

Headless installation

I'm getting quite used to prepare and install Raspberry Pi images, it's the fourth time, almost always headless. Plenty of tutorials can be found on the Internet by the way. This time is not very different apart from just one detail: I had to configure the Raspberry to connect to WIFI network from the very beginning.
So after copying the latest Raspbian image on the micro-SD card withe the usual “dd” command
sudo dd if=2017-11-29-raspbian-stretch-lite.img of=/dev/sdd

I configured Raspbian to enable SSH by default
sudo touch /media/maxx/boot/ssh

Then on the same root directory I created a “wpa_supplicant” WIFI configuration file
sudo vim.tiny /media/maxx/boot/wpa_supplicant.conf

Where I wrote down my wireless network configuration
country=ITctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1
network={ssid="WIFI"psk="secret"}

At last I powered the Raspberry Pi and scanned the WIFI network for the new entry computer.
I connected trough SSH and I went, of course, trough the usual post-installation operations like changing the Pi user password and expanding the file system to the full micro-SD extent.

Pi Camera installation

Once I verified the Raspberry was correctly working I powered it back down and connected the Pi Camera using the small flat cable also included in the Pi-Zero kit I bought.

Saturday, 30 December 2017

Backing-Up Your Data With Raspberry Pi

Among information technology bad practices not backing-up your data is the one you are going to regret more as something goes wrong. For too many years I’ve been relying solely on the good health of my disk drives, that means I was relying mostly on good luck, and on manually copying data, mostly photos and videos, on different supports. I decided so to buy myself a bigger disk drive with the sole purpose of keeping a backup copy of my data.

Hardware set-up

First things first, I bought an external 2TB USB disk. The disk size is enough to backup my 1TB NAS disk and other data I actually keep on the Raspberry Pi server or the desktop PC. More importantly the disk is externally powered since the Raspberry couldn’t power it by itself.
I formatted the , with the XDS file-system, by using the tool provided with my NAS disk, after attaching the new disk to the NAS spare USB port. This step is not strictly necessary but it will allow me, in future, to share the backup disk just by connecting it to the NAS USB port.
I then connected the backup disk to the Raspberry Pi 3 and configured the /etc/fstab file in order to mount it on start-up
/dev/sdb1 /media/backup xfs rw,defaults 0 0


Software set-up: rdiff-backup

While I was looking for a backing-up software solutions I was mostly thinking to some directory mirroring tool like RSync but, like often happens, I stumbled in a more complete solution when I did read this page describing a backup system based on Raspberry Pi and rdiff-backup.
Rdiff-backup is a command line based backup tool, it provide all basic backing-up features like differential backups or time based restore. More importantly, to me, it’s based on standards tools like Rsync directory mirroring and tar archives, meaning that archives are easily readable without the need of rdiff-backup itself.
I installed rdiff-backup with apt-get tool:
sudo apt-get install rdiff-backup

Then created some target folder in the backup drive
sudo mkdir /media/backup/public
sudo mkdir /media/backup/nas
sudo chown pi:pi /media/backup/public/
sudo chown pi:pi /media/backup/nas/

Then I manually started the initial backup, knowing the operation was going to take some time I started a independent shell session with the screen command.

screen
rdiff-backup --exclude /media/public/BTdownload /media/public/ /media/backup/public/

The backup command just needs source and destination folders path, many optional switches are available like the one I used, “--exclude”, which exclude from the backup process some sub-folder.
Once the initial backup completed successfully I used the crontab command to schedule the backup command.
crontab -e
Since most of backed-up data are photos and videos I produce during week-ends I scheduled it weekly ad Tuesday (Monday is already SD-card backup day)
0 5 * * 2 rdiff-backup --exclude /media/public/BTdownload /media/public/ /media/backup/public/

Some notes on performances


The initial backup of my photos and videos collection, about 300 GB, took most of the day to complete. The poor performance is mostly because I keep my data on a Samba share. Rdiff-backup documentation discourages backing up networked disks through in favor of the better optimized SSH protocol, unfortunately my NAS disk doesn't support this option. Not a big problem in my case anyway, because future differential backups will need less time, of course, and the backup process will be performed automatically between two always-on devices.

Monday, 2 October 2017

Backing-up the Raspberry Pi 3

Recently I had to repeat installation of my Raspberry Pi 3 server. Probably because of some SD card corruption problem I started experiencing unexpected loss of active services, first GitLab then MiniDLNA, a and failures while trying reinstalling or reconfiguring them. I so downloaded latest Raspbian image and went with a complete installation. Not a big deal, since I’ve been following my own instructions on this blog but still a time consuming process.
Once the Raspberry server was operative again I started looking for a simple backup solution in the case something broke again by itself or, not unlikely, I broke something by myself.
I quickly found in the Internet this discussion page where, among other solutions, it was proposed a handy shell script to completely backup Raspberry SD Card. Following discussion links I landed on this GitHub page where the same script is available in its latest version.
Installation
Installing the script is just matter of downloading and unzipping it or, as alternative, cloning it with git command. I did choose the latter since I’m going to need git in future.
sudo apt-get install gitmkdir scriptcd script/git clone https://github.com/aweijnitz/pi_backup.git
configuring the script
The PI backup script is a fine example of shell programming, it needs only a couple of arrangements to fit the system where is installed.
First functions stopServices() and startServices must be edited by uncommenting commands to stop and start services running on the Raspberry. I added command to stop and start MiniDLNA service:
...sudo service minidlna stop...sudo service minidlna start...
Then I edited the backup path. In the same scrip section it’s possible to set the number of old backups to keep and if backed-up images must be compressed.
...# Setting up directoriesSUBDIR=backupMOUNTPOINT=/media/usbdiskDIR=$MOUNTPOINT/$SUBDIRRETENTIONPERIOD=1 # days to keep old backupsPOSTPROCESS=0 # 1 to use a postProcessSucess function after successfull backupGZIP=0 # whether to gzip the backup or not...

Saturday, 15 July 2017

Installing RetroPie (on the Raspberry Pi B+)

Just after I installed the Raspberry Pi 3 as home server I promised myself I would have destined the old board to more “experimental” experiences. As soon as I got some fee time I so decided to explore Raspberry gaming capabilities. I'm far from being a gamer today but I spent some time playing computer games when I was younger, during the “Commodore Amiga age”.

RetroPie

RetroPie is a Raspberry Pi distribution, based on Raspbian, specialised on making the Raspberry a full featured gaming machine. RetroPie image is provided with a great variety of emulation software, a graphics user interface, gaming control support and a configuration program to setup most of its options without the need of keyboard and mouse. Among its features RetroPie allows to download and install optional modules supporting things like media server software and open source games.

Parts list

Before starting to install I collected the required hardware: The Raspberry Pi, of course, a 8GB USB disk I had available, a wireless USB adapter I already used with the Raspberry and a cheap wireless keyboard I bought during a surplus fair. Last but not least by bedroom TV was going to be used as monitor. The wireless keyboard has been the only thing I bought with this project in mind.

Friday, 28 April 2017

Setting-up the Raspberry PI 3 as a home server

It has been some time since last time I wrote, unfortunately my job stole most of my limited free time keeping me from experimenting and so posting about it. At last I managed to collect enough free time to complete Raspberry PI 3 installation and replace the older model I was using as home server.

Just like before? Not exactly

When I started configuring and installing the Raspberry PI 3 I was hoping it would have been a simple repetition of operation I already performed on the older Raspberry. Most of it has been that way but in some cases I experienced some relevant difference.

Configuring a static IP address

I've been configuring static IP address on Linux since I installed my first Pentium III based Linux, so I really didn't expect any problem here. Once I configured “/etc/networking/interfaces file” I instead noticed the Raspberry was visible on the network with two different addresses. After some searching on the Internet I discovered it's because of a different way DACP client works on latest Raspbian release. The problem can be solved in two ways: first is configuring DHCP client in order to let it set a static address on network interface alternatively it's possible disable DHCP client for one or more network interface. I chose the latter, at the end, since the Raspberry is going to be a DHCP server so there is no deal in keeping DHCP client active. I disabled DHCP client from assigning address to both wired and wireless network interface by adding the following line to “/etc/dhcpcd.conf” configuration file.
denyinterfaces wlan0 eth0

DHCP server and wireless access point

Like I did on my first Raspberry server I configured the new one to work as DHCP server and a wireless access point. It seem there are no relevant changes since first time I did it, I simply had to follow my own instructions.

Installing applications

Installing apt-ger based applications like LAMP sever and MiniDLNA server has been a quite easy task, while to install other applications like RPI-Monitor I had to look for the updated download link on the Internet. I also installed the updated version of SFPG picture gallery, it works but picures thumbnails don't show. I'll look for a solution later.

Power supply and cables

Once I had the Raspberry PI 3 installed and configured on my desktop I pit it in place of the old one and … nothing was working. It took me some time of testing and pinging before I noticed the board power led wasn't properly lighted-up. The phone/tablet charger I used to supply the old Raspberry wasn't up to the Raspberry PI 3 power requirement. I replaced the power supply with the one I used for desktop test but it wasn't enough to make the Raspberry PI 3 working, I had to replace micro-USB power cable with a shorter one in order to have it working, I think it's better I'll buy a dedicated Raspberry PI 3 power supply soon.

Sunday, 15 January 2017

New toy on the desk: Raspberry PI 3


Just before Christmas I've been to a “traditional” electronics and surplus fair, here in Genoa, and bought myself, among other things, a Raspberry PI 3 (version B) board. My goal is to replace, as home server, the Raspberry PI I bought two years ago in order to take advantage of the more computing power offered by the new board. Additionally the older board will be set free for more “experimental” experiments. As “accessories” to my new Raspberry board I bought a (clear) plastic case, a 16GB micro SD card and en external 2.5'' USB hard disk.

Installation and first tests

I first downloaded latest Raspbian release, the “Lite” version since I'm going to use it as a headless server. Like I did last time I copied the disk image on the 16GB SD card using the “dd” command.
sudo dd if=2016-11-25-raspbian-jessie-lite.img of=/dev/sdd
All worked fine but I had to fix a couple of things. The image I copied at the first tentative didn't boot, I had to remove all memory card partitions using Gparted then repeat the copy process. The disk copied after the second tentative works fine, I don't know if problem was because a failure in the first copy or because of how the card was pre-formatted.
The latest Raspbian release has SSH demon disabled by default to enable it I had just to add an empty “ssh” named file on the memory card root folder.
touch /media/maxx/boot/ssh

Wednesday, 4 May 2016

Place the Raspberry PI at the centre of your network


My recent problems with Internet providers, followed by the need to change my ADSL modem-router made me think if it would be wiser to make my home network less router dependent. Local network at my home, like most home networks, relies on the ADSL modem-router for the Dynamic Host Configuration (DHCP). Every time I changed the router I had so to reconfigure its DHCP server in order to restore my network configuration, often not being able to access to some network devices, like the NAS disk, until the DHCP was properly configured.
While looking for a Raspberry DHCP configuration how-to I literally stumbled into this page about using the Raspberry PI as a wireless router. This also inspired me about using the Raspberry also to provide a backup or private WI-FI access.
Hardware set-up
First things first: I already had a Wi-Fi dongle wandering in my drawers, I installed in the Raspberry PI USB port and checked it worked. Not all the wireless interfaces are able to be used in “access point mode”, to check if the one I had was compatible I installed the “iw” utility:
sudo apt-get install iw
executing the command:
iw list
I got a detailed list of the network interface features, among them in the the supported interfaces modes:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* WDS
* monitor
* mesh point
i got confirm that the interface could work as access point.

Saturday, 27 February 2016

Monitoring the Raspberry PI with RPI-Monitor


My Raspberry PI is, ,silently and tirelessly, doing its work as a headless server, mostly working as media-server thanks to MiniDLNA and SFPG gallery. Thanks to all this working silent and without asking maintenance I sometimes even forget about the Raspberry PI this is because I felt the need of looking for a tool that allowed me to check the Raspberry status trough a simple web interface.

RPI-Monitor

RPI-Monitor is a web-based monitoring application developed by RPI-Experiences. I got informed about it by reading its description on eLinux.org page. On the same page I also found detailed information on how to set-up repository and install RPI-Monitor package so that installing it has been a mere copy-and-paste exercise.
sudo apt-get install apt-transport-https ca-certificates
sudo wget http://goo.gl/rsel0F -O /etc/apt/sources.list.d/rpimonitor.list
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
sudo apt-get update
sudo apt-get install rpimonitor
Once installed RPI-Monitor is available at port 8888 of Raspberry PI address
The “Start” button brings to RPI-Monitor status page where monitoring information is neatly exposed

Thursday, 25 June 2015

More work on the Raspberry PI


I've been working a little more on my Raspberry PI based server. After installing Minidlna server my Raspberry PI server needed some easy way to transfer media files into the USB disk. Sharing the disk with Samba has been, to me, the obvious solution. Also I installed the basis of a LAMP server (Apache2, MySQL, PHP5) for future installation of server applications.

Sharing a disk with Samba

The first step has been so installing samba from command line apt-get


sudo apt-get update
sudo apt-get install samba samba-common-bin
then I edited samba configuration file
sudo vim.tiny /etc/samba/smb.conf
where I added the definition instructions for sharing the USB disk
[usbdisk]
comment = Raspberry PI USB disk
path = /media/usbdisk
browsable = yes
guest ok = yes
read only = no
create mask = 0777
directory mask=0777
public= yes
only guest = no
force user = pi
force group = users
To keep things on the easy-to-use side I set the share for a public “guest” use without asking for passwords. Since my Raspberry server is still in a experimental status I don't have, not yet at least, many security worries to think about.
I tested the configuration with the testparm command
testparm /etc/samba/smb.conf
and eventually restarted the samba service.
sudo service samba restart

Wednesday, 31 December 2014

New toy on the desk: Raspberry Pi


During a recent Electronics and Surplus fair just before Christmas I decided to buy myself what I consider has been the computer of this soon-to-end year: the Raspberry Pi.
I'm not sure yet what I'm going to do with it, apart from experimenting of course. Probably I'll use it as headless server thanks its low power consumption it would be able to stay on-line 24 hours a day.


Before to start

The Raspberry board (a B+ model) I bought was a bare-bone one so, before to start, I had to procure a 2A USB power supply and a 8 GB Micro-SD memory card. Some cell-phone charger can power the Raspberry (mine didn't) and on the 'net you can find Raspberry disk images as small as 2GB but, for a stable use, a dedicated power supply and a big enough memory card are needed.