May 042014
 

Gestern erhielten wir ein Paket aus China, mit einem BananaPi als Inhalt. Wie grün noch ist diese in den Markt gebrachte Banane? Reift sie genauso wie “Banana Software” erst mit der Zeit nach?

Hier ist unser erster Eindruck von der neuen Platine, die dem Raspberry Pi Konkurrenz machen möchte!

Auspacken

BananaPi-Bubble-PackageBanana-Pi-CartonBox

BananaPi-ESD-bag

Unsere Banana Pi Platine kommt dick in Luftpolsterfolie eingewickelt, einem unbeschrifteten weißen Karton (schneller Markteintritt?), und natürlich in einem antistatischen ESD Beutel verpackt.

Sobald dieser Beutel aufgerissen ist, kann man den BananaPi in Ruhe von allen Seiten betrachten:

Banana-Pi-shot

Die Banane misst 92 mm x 60 mm, was ein wenig größer ist als unsere vertraute Beere (85 x 56 mm ).

Inkompatibel mit Raspberry Pi Gehäusen

Leider wird sie durch die größere Platinengröße, und auch die zusätzlichen Anschlüsse (z.B: SATA Anschluss), inkompatibel mit den meisten Raspberry Pi Gehäusen. Abgebildet ist das TEK-BERRY Gehäuse, das wir für fast alle unsere Raspberry Pi Produkte verwenden:

BananaPi-TEKBERRY-case

 

Anschlüsse / Interfaces

Der Banana Pi hat, wie der Raspberry Pi auch, zwei USB Ports, einen micro-USB Anschluss für Power (neben dem SATA Port, NICHT an der “gewohnten” R-Pi Position!).

Für Video-Ausgabe sorgen der HDMI Port, und ein RCA Jack (NTSC / PAL). Für Audio gibt es die gewohnte 3.5 mm Klinkenbuchse. Audio kann natürlich auch über den HDMI Port ausgegeben werden.

Er wird als Raspberry Pi kompatibel vermarktet, hat daher den gewohnten GPIO Pin Header mit UART, I2C, SPI, Power. Nach eigenen Angaben pin-kompatibel, noch nicht von uns getestet.

Er hat jedoch noch einige mehr Anschlüsse, bzw. vom Pi abweichend:

  • GBit LAN Anschluss
  • IR – Empfänger
  • USB OTG Anschluss (kann auch zum “powern” des B-Pis genutzt werden)
  • SATA Anschluss (& Power Header für SATA drives)

 

  • zusätzliche Pins (GPIO Port) –> CAN bus, ADC
  • Eingebautes Mikrofon (neben dem Audio Ausgang)
  • Drei Tasten (Reset, Power Key, Uboot Key)
  • Eine Custom programmierbare LED (beim Pi kann eine LED ebenfalls umfunktioniert werden)

Was wir bei dem Banana Pi vermissen ist eingebautes WiFi & Bluetooth, was bei dem Raspi auch wirklich, wirklich fehlt. Liebe Foundation, vielleicht bei Model C? In unseren Raspberry PI Kits legen wir daher oft einen WLAN Stick bei, der jedoch einen der USB Ports gleich belegt.

BananaPi-FrontBananaPi-Back

Die Fotos zeigen den Banana Pi von vorne und von hinten. Der SoC und die beiden RAM Chips sind hinten gut erkennbar. Bei dem Raspberry Pi befindet sich der Speicher direkt über dem SoC (d.h. das ist der Chip den wir eigentlich darauf sehen).

Folienkabel – Anschlüsse:

Der BananaPi hat einen DSI Display Connector, neben dem LAN Port, und einen CSI Camera Connector. Im Vergleich zum Pi sind diese damit genau umgekehrt! Durch veränderten Pitch sind die Stecker anders als beim Pi dimensioniert – 16 mm Breite des Folienkabels beim R-Pi (Kameramodul), ca. 20,5 mm Breite der Buchse beim R-Pi. Das BananaPi hat Buchsen für ein ca. 21 mm breites Folienkabel, und die Buchsen selber sind ca. 26 mm breit.

Das Kameramodul des R-Pis und dessen Software ist auf den Broadcom SoC des Pis optimiert, um beispielsweise direkt in H.264 aufzeichnen zu können.

Ich vermute, dass es mit einem Gewaltmarsch in Software, und evtl. Hardware-Rerouting möglich wäre, das Kameramodul des Pis an den Banana Pi anzubinden. “Out of the box” scheitert es jedoch allein schon an dem Steckverbinder.

Erweiterungen

Rund um den Raspberry Pi gibt es eine Vielzahl von Erweiterungen, beispielsweise auch unser Touch Display Modul, das per GPIO Kabel angebunden wird.

In diesem Fall (und falls der Header wirklich Pin-kompatibel ist, wie behauptet) hängt die Nutzung nur von der Software ab, die für den Banana Pi neu geschrieben werden muss. Unser Display ist beispielsweise noch nicht kompatibel mit dem Banana Pi, da es ein besonderes Kernel-Modul, das für den R-Pi Kernel kompiliert wurde, benötigt. Da dieser Kernel wiederum für den R-Pi ist, dürfte er auf dem Banana Pi nicht starten, oder es könnte Unterstützung für diverse Hardware fehlen.

BananaPi-Ribbon-Cable

Viele der Erweiterungen werden allerdings speziell für den Formfaktor des Raspberry Pis hergestellt. Beispielsweise sieht man in den folgenden zwei Bildern das beliebte PiFace. Links auf dem Banana Pi, rechts auf dem Raspberry Pi:

BananaPi-PiFaceRaspberry-Pi-Piface

Wie man auf dem linken Bild erkennen kann blockiert der anders angebrachte LAN Port des Banana Pis das erfolgreiche Einstecken des PiFaces! Dieses kann jetzt nur noch über spezielle Adapterplatinen, wie bspw. Farnell’s Multi-breakout Board angeschlossen werden.

Das ist wichtig zu wissen, bevor man den Banana Pi kauft.

Auch Erweiterungen die einen wesentlich kleineren Footprint haben können problematisch sein:

BananaPi-RasClock

Die RasClock, Realtime Clock für den Raspberry Pi, lässt sich gut stecken. Mit dem Batteriehalter, und damit +3V berührt sie jedoch einen der Pins des BananaPis! Das ist auf dem Foto bei genauem Hinschauen zu erkennen.

Die Entfernung zwischen Composite Port und GPIO Header ist ebenfalls eine andere, dadurch sind weitere Erweiterungsplatinen inkompatibel. Raspi.TV hat ein Foto.

Hardware & Software

Der Banana Pi hat im Vergleich zum Raspberry Pi einen deutlich leistungsfähigeren, Dual-Core AllWinner A20 SoC – ARM Cortex A7 basierend.

1 GB DDR3 SDRAM im Vergleich zum R-Pi sind ein schöner Sprung, es gibt jedoch bereits Embedded-Boards mit noch mehr RAM.

Die Mali 400 GPU des BananaPis (ARM Mali400MP2) ist OpenGL ES 2.0/1.1 fähig.

In den SD/MMC Slot können bis zu 64 GB Karten eingesteckt werden, und bis zu (angeblich) 2 TB Festplatten an den SATA Anschluss angeschlossen werden. Ich vermute, dass auch größere Festplatten möglich sein sollten.

Die zwei USB Ports sind direkt an den AllWinner SoC angebunden, dadurch ist natürlich der Gesamtdurchsatz je Port im Vergleich zum Pi erhöht. (Der Pi bindet LAN, und beide USB Ports über einen einzigen tatsächlichen USB Port des SoCs an.)

Strom erhält der Banana Pi über einen oder beide Mikro-USB Ports. Er benötigt 1,7 A im Vergleich zu dem deutlich genügsameren R-Pi mit 750 mA. Wir haben mit einem 2 A Netzteil getestet.

Gebootet wird der Banana Pi genauso wie der Raspberry Pi von der SD Karte.

Nicht kompatibel mit SD Karten für den Raspberry Pi

Mein erster Versuch war, direkt von einer für den Raspi bespielten SD Karte zu booten. Fehlanzeige – der Bildschirm blieb dunkel, nur eine LED leuchtete.

Es müssen speziell für das System erstellte Images heruntergeladen werden. Es gibt ein auf Raspbian basierendes Image, das sogar die Raspbian Repositories für Software-Installation nutzt.

Es ist jedoch eigentlich sinnvoller, falls man nicht auf die Raspbian – Ökosphäre angewiesen ist, ARMv7 – Repositories / Software zu nutzen. Beispielsweise wird dank ARMv7 Ubuntu unterstützt, oder nach eigenen Angaben auch Android 4.4.

Für Android gibt es momentan allerdings nur ein Android 4.2 Image zum Download.

BananaPi-and-Picard

Mit unserer half-size SD Karte pi.card ist der Banana Pi kompatibel. Die Karte lässt sich nicht ganz so leicht wie bei dem Raspberry Pi entfernen, schließt jedoch bei dem Banana Pi bündig mit dem Rand ab.

pi.card wird also mit allen für den Banana Pi erscheinenden Gehäusen kompatibel sein. Mit den passenden Images für den Banana Pi kann man pi.card mit unserem beiliegenden SMILE SD Reader an jedem Rechner bespielen.

Raspbian auf dem Banana Pi Board

Das Image kann man von http://www.lemaker.org herunterladen (Google Drive Mirror). Raspi.TV hat in ihrem Review darauf hingewiesen, dass das Image für manche 8 GB Karten zu groß ist, daher habe ich es nach dem Entpacken gleich auf eine 16 GB Karte gespielt.

Das System startet direkt nach dem Boot in den Desktop (kurze Wartezeit mit dunklem Bildschirm inklusive).

Wie bereits beschrieben ist die Raspbian Repository eingebunden, und Pakete können wie gewohnt mit aptitude install installiert werden, z.B. aptitude install chromium

Chromium funktioniert, ebenso wie Midori.

Alles, inklusive den Browsern, und der Paketinstallation läuft spürbar schneller als auf dem Pi, jedoch für meine (vielleicht sehr anspruchsvollen?) Surf-Bedürfnisse immer noch ZU langsam (Seitenaufbau, Reaktionszeiten).

Das gleiche gilt auch für raspi-config, mit dem man z.B: die Tastatur konfigurieren kann. Ich bezweifle dass Übertakten, etc. aus raspi-config heraus funktionieren wird, ausprobiert habe ich es jedoch noch nicht.

Bei unserem Test hatte der HDMI Ausgang nach einem Time-Out ausgeschaltet. Auch durch Tastaturdruck / Mausbewegung konnte der Bildschirm nicht reaktiviert werden. Vielleicht eine Einstellungssache?

omxplayer

omxplayer ist zwar installiert, beendet sich aber mit der Fehlermeldung

“* failed to open vchiq instance”

egal ob man ihn als root oder user pi ausführt.

Das war nicht anders zu erwarten, ist doch omxplayer für OpenMAX, und insbesondere den VideoCore IV, die GPU des Raspberry Pi SoCs entwickelt worden. Die Mali GPU des Banana Pis muss anders angesprochen werden!

vlc

vlc konnten wir leider nicht testen, da es sich nicht installieren ließ. Das könnte mit den benötigten Reboots zusammenhängen (siehe oben: HDMI Time-Out)

Noch keine Unterstützung für WiringPi, RPi.GPIO

Gemäß Raspi.TV hat der Banana Pi (dort liebevoll ‘nana genannt) noch keine High-Level Unterstützung der GPIO Ports für Python, etc. Das wird sich bestimmt mit der Zeit ändern (Kernel-Unterstützung), hängt jedoch auch sehr von der Community-Größe ab. Hier hat der Pi die Nase eindeutig vorne.

Für GPIO-Interfacing sind darüber hinaus die Prozessor / Netzwerk Fähigkeiten des Pis vollkommen ausreichend – wenn man die Daten aufwendig weiterverarbeiten möchte währe eventuell ein zusätzlicher Server, beispielsweise eine virtuelle Maschine, aktuell eine interessantere Wahl als die Banane.

Android auf der Banana

Das Android Image von lemaker.org kann NICHT mit Win32DiskImager geschrieben werden. Es muss ein Tool von Allwinner dazu genutzt werden (PhoenixCard). Wir haben es aufgrund von Sicherheitsbedenken nicht getestet, da dieses Tool leider nicht direkt auf der Allwinner Seite herunterzuladen war.

Hier ist die benötigte Anleitung.

Fazit

Der Banana Pi ist eine gute Idee, jedoch steckt der Teufel in den Details:

  • Viele Raspberry Pi Erweiterungen mechanisch inkompatibel
  • Gehäuse inkompatibel
  • Software muss neu erstellt und angepasst werden (z.B. Kernel-Treiber)
  • Leistungssprung relativ gesehen nicht “sensationell”, potentiell schlechtere Grafik-Performance / Hardware Encoding / Decoding (noch zu wenig Infos darüber verfügbar)

Für Bastler, die nur den GPIO Port mit Python, etc., nutzen wollen, ist der Raspberry Pi nach wie vor erste Wahl. Hierbei spielt der langsame Prozessor keine solche große Rolle. Je nach eigenen Fähigkeiten sind auch Arduino-kompatible Boards sehr, sehr interessant. Ich sehe hier für den BananaPi nicht den Schlüsselmarkt.

Für NAS / … Anwendungen kann man entweder auf dedizierte Hardware zurückgreifen (die preislich mit Gehäuse etwa gleich liegt), oder auf einen leistungsfähigen Intel Atom SoC / bald auch auf einen AMD ARM64 setzen. Intel’s Minnowboard Max bietet z.B:

  • 64 bit Intel Atom SoC, auch als dual-Core erhältlich
  • 2 GB DDR RAM
  • einen USB 3.0 port (!)
  • PCI Express Gen 2.0 Lane

Es ist zwar natürlich teurer als der Raspberry Pi, und als der Banana Pi – aber auch deutlich leistungsfähiger und zukunftssicherer dank USB 3.0!

Für CloudComputing – Anwendungen ist der Formfaktor des Rpis / des BPis uninteressant, da nicht platzoptimiert, auch die Leistung per € / $ ist zu niedrig.

Summa summarum wirkt der Banana Pi auf uns momentan noch sehr unreif – wir empfehlen zu warten, bis die Plattform reifer wird, oder zu einer Alternative zu greifen.

Gute Alternative: HummingBoard

Wer von dem Banana Pi nicht ganz überzeugt ist:

Eine weitere Raspberry Pi “look-alike” Plattform, HummingBoard von SolidRun steht schon in den Startlöchern. Falls die Abmessungen der Platine, und deren Konnektoren kompatibler zum R-Pi sind, wäre schon viel gewonnen.

SolidRun geht beim Aufbau der Plattform und Community auf jeden Fall geschickter vor – die Platine befindet sich jetzt erstmal in den Händen von Entwicklern, auch für OpenELEC / Raspbmc Unterstützung wurde von Anfang an gesorgt. Wer auf den Raspi-Formfaktor verzichten kann, kann bereits jetzt bei SolidRun einen Computer in Form eines kompakten, passiv gekühlten Würfels bestellen.

Leider hat auch das HummingBoard keinen WiFi on-board support. Bei den anderen SolidRun Modellen ist WiFi teilweise eingebaut.

Momentan ist das HummingBoard noch nicht verfügbar. Bei entsprechender Nachfrage (bitte um Kontakt) werden wir uns überlegen, es auch in unser Sortiment als “Highend Raspi” aufzunehmen.

Referenz & further reading:

Apr 032014
 

What is this about?

How to set up a Raspbian system as a read-only system in a couple of easy steps.

03-March_Reading_for_life

This penguin has been doing a lot of reading as of lately.

Why is this of interest to me?

The filesystem on the Raspberry Pi’s SD card, as every filesystem on every computer, can be corrupted if you disconnect the power suply.

Once you make the filesystem read-only (all changes go to a RAM-Disk), you will be able to disconnect the power supply whenever you want.

An additional bonus is less wear on the SD card – sometimes you do NOT want the logfiles which a standard Linux / Raspbian will write to anyway. Our solution will write those to a RAM-Disk and discard them on reboot / power cycling.

Last but not least, you can set up a known state to boot into, experiment, and if things go wrong, simply reboot.

How-To make Raspbian read-only

all commands to be run as root (sudo su) if not specified otherwise.

This how-to is based on another how-to I found on the Internet, in German. Thanks guys!

Disable swap

dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile disable

Install UnionFS

UnionFS is an overlaying filesystem (you can mount from several different locations into the same folder). In case of collisions, UnionFS uses priorities for the filesystems. It is frequently used to create RAM-Disk Overlays for read-only systems, for instance also with Live CDs.

aptitude install unionfs-fuse

Create mount script

nano /usr/local/bin/mount_unionfs

Add the following content to this file:

 #!/bin/sh
 DIR=$1
 ROOT_MOUNT=$(awk '$2=="/" {print substr($4,1,2)}' < /etc/fstab)
 if [ $ROOT_MOUNT = "rw" ]
 then
   /bin/mount --bind ${DIR}_org ${DIR}
 else
   /bin/mount -t tmpfs ramdisk ${DIR}_rw
   /usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}_rw=RW:${DIR}_org=RO ${DIR}
 fi

make it executable:

 chmod +x /usr/local/bin/mount_unionfs

Update /etc/fstab:

nano /etc/fstab

Modify the file to read (adjust partitions for NOOBS!) as follows:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    ro                0       2
/dev/mmcblk0p2  /               ext4    ro,noatime        0       1
mount_unionfs   /etc            fuse    defaults          0       0
mount_unionfs   /var            fuse    defaults          0       0
none            /tmp            tmpfs   defaults          0       0

Prepare the directories

cp -al /etc /etc_org
mv /var /var_org
mkdir /etc_rw
mkdir /var /var_rw
reboot

At this point your Raspberry Pi should be read-only already. You can verify this with

mount

This command should show something like the following:

/dev/root on / type ext4 (ro,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=215824k,nr_inodes=53956,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=44820k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=89620k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
/dev/mmcblk0p1 on /boot type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
ramdisk on /etc_rw type tmpfs (rw,relatime)
unionfs-fuse on /etc type fuse.unionfs-fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
ramdisk on /var_rw type tmpfs (rw,relatime)
unionfs-fuse on /var type fuse.unionfs-fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
none on /tmp type tmpfs (rw,relatime)

This indicates to you that the filesystems are mounted read-only and unionfs is active.

Clean up the Log directory

mount -o remount,rw /
for f in $(find . -name \*log); do > $f; done
cd /var_org/log
rm -f *.gz

Reboot

Another reboot and you’re done!

reboot

How-To Install additional Packages after “read-only-modding”

You’ve got to remount the root filesystem as readable. For instance, as root, you can do:

mount -o remount,rw /
aptitude update
aptitude install stress
May 082013
 

This is a short summary of the German article I have posted yesterday. Have a look at it, if you want to see photos how to distinguish Version 1.0 from Version 2.0 of this TP-Link TL-WN725 N Nano WiFi USB dongle.

Update

We have released a package in our repository to install this driver in the most easy fashion possible. Head on over to our new blog-post to read all about it!

What is this about?

TP-Link changed the chip driving it’s TL-WN725N Nano WiFi stick. Whereas v1.0 would work out of the box with the newest Raspbian (02-09-13) v2.0 does not work unless you install a custom driver.

Driver installation procedure (legacy)

If possible, you should use the instructions to install the driver from our repository – it is more convenient for you. The remainder of this article is here for historical purposes.

MrEngman from the Raspberry Pi Forum has compiled a driver for v2.0 (which uses the 8188eu chip), including modifications for making the blue LED work and less debug output (thus making it faster).

Here are his installation instructions, quoted from this forum post on the Raspberry Pi Forum:

wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20130209.tar.gz
tar -zxvf 8188eu-20130209.tar.gz
sudo install -p -m 644 8188eu.ko /lib/modules/3.6.11+/kernel/drivers/net/wireless

Once you have installed the driver you should activate it:

sudo depmod -a
sudo modprobe 8188eu

The first command will update the kernel module settings – on the next reboot, the new driver should be included automatically. The second command allows you to load the driver immediately. Now you can try ifconfig to see wlan0 – it should be available now.

Raspbian Image with driver

We have bundled the driver with a fresh Raspbian image, based on Raspbian 2013-02-09.

Additionally we have updated the apt cache, and installed all currently available updates to the default packages. This should save you some bandwidth and – more importantly – time.

This image will be 4 GB in size when you decompress it (use 7-zip), and should be installed by the usual method of image writing to SD cards. Please note that we have not expanded the image to fit the whole (4 GB) SD card, you still need to run sudo raspi-config to finish the set-up.

The original tar.gz file from MrEngman is in the folder /home/pi/wlan-fix – just in case you should ever need it, it is already installed and activated for you in this image.

download-tp-link-wlan-fix-image[4]Download raspbian-wifi-fix130523.7z (532 MB)

 

Update

I have updated the image today (31.05.2013). It has all updates as of the 23rd of may of a stock Raspbian install. Also I have resized the image to the real size the partitions need initially.

Please note, if you run updates the driver may become disabled. Simply use

sudo depmod -a
sudo modprobe 8188eu

to fix this after the updates.

 

Simple WiFi network setup

In the simple case of the Raspberry Pi being used with WLAN only, a DHCP access point / router, and no roaming is required, you should be fine with the followíng /etc/network/interfaces file

auto lo

iface lo inet loopback
#iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
        wpa-ssid "your-ssid"
        wpa-psk "your-password"
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Change your-ssid and your-password, but please keep the quotation marks around them. As you see in the setup above, the wpa_supplicant.conf is commented out.

Apr 112013
 

As we have posted earlier, we own an old CanoScan LiDE 30. We are very satisfied with this scanner – but unfortunately it does not work on newer versions of Windows (e.g. Windows 7 64 bit, Windows 8) – Canon “forgot” to release updated drivers.

Raspberry Pi networked scanner sharing

A Raspberry Pi is perfect for a small, low volume server application. Today, we have put together all the pieces necessary to use it to attach the Canon scanner to our network, and scan from Windows once again.

BTW: It looks as though the Fujitsu ScanSnap 1300i might also be supported by SANE. This is the replacement scanner for the Canon flatbed scanner we bought – but it can’t scan books, for instance.

Step by step setup guide:

This guide is written for Raspbian. We have tested it with the latest Raspbian version currently available (2013-02-09).

Get the required packages:

sudo su
aptitude update
aptitude install xinetd sane-utils

xinetd is the Internet superdaemon which will start saned, the “Scanner Easy Access Now” daemon when a network connection to it’s port is opened (saned can’t do that on it’s own).

sane-utils contains the saned. (On Archlinux the package is called simply “sane”)

Raspbian automatically sets up the group saned and the user saned for you. It also adds the user saned to the group scanner.

Configure /etc/default/saned so it will start automatically (RUN=yes):

# Defaults for the saned initscript, from sane-utils

# Set to yes to start saned
RUN=yes

# Set to the user saned should run as
RUN_AS_USER=saned

Start saned, and test whether the scanner is recognized. Ideally you should do this as user saned, to see if all access rights for saned are setup correctly. Your scanner should naturally be attached to the Raspberry Pi. If it draws its power through USB, we recommend to use a powered USB hub.

root@raspberrypi:/home/pi# /etc/init.d/saned start

root@raspberrypi:/home/pi# su -s /bin/sh - saned
No directory, logging in with HOME=/

$ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 008: ID 04a9:220e Canon, Inc. CanoScan N1240U/LiDE 30
Bus 001 Device 007: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 006: ID 046d:c31c Logitech, Inc. Keyboard K120 for Business

$ scanimage -L
device `plustek:libusb:001:008' is a Canon CanoScan N1240U/LiDE30 flatbed scanner

$ exit

root@raspberrypi:/home/pi#

I have included the # and $ prompt in this listing, so you can distinguish between commands the root user (#) issues and the saned user issues ($)

If you see your scanner here, great. If not – have a look at the documentation and further reading links we will provide at the end of this article.

The USB scanner itself is plug & play – you can attach it to the Raspberry Pi when you feel like scanning, and remove it after you have finished.

Prepare network sharing of the scanner

root@raspberrypi:/etc/xinetd.d# cat /etc/services | grep sane
sane-port       6566/tcp        sane saned      # SANE network scanner daemon

You should see the sane-port line as in the listing. If it is not in there, add it.

root@raspberrypi:/# cd /etc/xinetd.d

root@raspberrypi:/etc/xinetd.d# touch sane-daemon

root@raspberrypi:/etc/xinetd.d# which saned
/usr/sbin/saned

root@raspberrypi:/etc/xinetd.d# nano sane-daemon

This will set up the XInet configuration. Please use the following configuration for the /etc/xinetd.d/sane-daemon file:

service sane-port
            {
              socket_type = stream
              server = /usr/sbin/saned
              protocol = tcp
              user = saned
              group = saned
              wait = no
              disable = no
            }

Note that we used the output from “which saned” in the configuration above. If it is different for you – e.g. on Archlinux – adjust accordingly.

Set up saned to accept connections from your network by editing /etc/sane.d/saned.conf:

# saned.conf
# Configuration for the saned daemon

## Daemon options
# [...]
# data_portrange = 10000 - 10100


## Access list
# [...]
# The hostname matching is not case-sensitive.

#scan-client.somedomain.firm
192.168.1.0/24

#192.168.0.1
#192.168.0.1/29
#[2001:7a8:185e::42:12]
#[2001:7a8:185e::42:12]/64

# [...]

Please adjust the subnet specification 192.168.1.0/24 to your network architecture. You can also explicitly specify single IPs. If you do not edit this file, SaneTwain will hang when contacting your Raspberry Pi scanner server.

Now you can reboot the Raspberry Pi (sudo reboot), and continue to the set up on the Windows side.

Setting up Windows to access the SANE network scanner

We have tested with Windows 7 64 bit & Windows 8 64 bit.

Windows users use “TWAIN” drivers. Luckily, there is an application, which will create a bridge between TWAIN and SANE on the network. The author claims it does not work for 64 bit Windows, but it did work for us. Please report back in the comments about your success / failure stories on different Windows versions.

Download SaneTwain here.

SaneTwain Setup

image

Just enter your Raspberry Pi IP (if you do not know it, “ip addr show” will show you it’s network setup) as the hostname. Port and Username can stay the way they are. Look through the other settings, if you want to. The Mail tab, for instance, offers the possibility to set up an Evernote account you want to scan to.

Before you try to use the TWAIN driver SaneTwain offers, you should set up the hostname using the way we just described (by starting ScanImage.exe).

Scan

Now you’re set up for scanning. Use the “preview” button to acquire a preview, and the “scan” button to save the selected area to a PNG (it will be scanned with better quality, of course). The resolution can be set, also other options.

Wait until the scanner is finished with the preview and has repositioned itself, before you hit the “scan” button.

image

The TWAIN driver works for us, too. (Tested with IrfanView) – this is Windows 8 64 bit. No special tweaks were applied.

Setting up Linux to scan from the network scanner

If you have a Linux box, you can use basically any SANE Frontend to scan using the network.

You need to add the network scanner to a local SANE installation.

Edit /etc/sane.d/net.conf and add the IP of your server. You can specify multiple servers.

image

Test with scanimage –L once again, and after a while you will see your network scanner showing up.

Frontends

Try XSane. Noteworthy is also gscan2pdf which will convert scanned pages to multipage PDFs, and even OCR them for you!

Of course you should be able to scan from another Raspberry Pi on your network, or even the Internet.

simple-scan is a frontend for SANE.

Further Reading & Links

SANE

SaneTwain

How-Tos

We used the following how-tos in building this tutorial. Thanks, guys!

Nov 112012
 

This is the first post ever on this blog. So, first of all – a hearty welcome! We hope you have a pleasant stay.

What’s this post about?

Say, you’ve got a Raspberry Pi and two SDHC cards – one is already set up with Raspbian, you can boot into it, and get your Pi online. The other one is empty – and you want to install Raspbmc on it.

There are graphical installers, of course, and other “easy” ways to do it from your main computer, assuming you have one.

But what, if not? Or if you simply want to use a Raspberry Pi to bootstrap another Raspberry Pi?

Well – it’s pretty easy! And of course this procedure can also be used to bootstrap all other known systems for the Pi out there!.

Prerequisites

  • Raspberry Pi, connected to the Internet, booting into Raspbian or another distribution with command line access
  • SDHC card reader
  • second SDHC card
  • enough space on the first SDHC card to download and decompress the image you intend to use

Instructions

We assume you run as normal user (pi), thus you need to prefix some commands with sudo

  • Attach your SD reader with the second SDHC card inserted, on which you want to install Raspbmc. The SD reader should be attached to a powered hub.

Attention!!! All data on the second SDHC will be overwritten by this installation procedure. If in doubt, do not proceed!

Attention 2: If you attach your SD reader directly to the Raspberry Pi, it may become unstable and crash during the writing process (as result of a power deficit during writing to the SD card). Even if your SDHC can be readable just fine, writing to it may use more power and thus lead to unpredictable results.

  • Log into your Raspberry Pi shell
  • Download your image to the /tmp directory using wget. We will use the Raspbian network install (to save space on the first SDHC card).

cd /tmp
wget http://download.raspbmc.com/downloads/bin/ramdistribution/installer.img.gz

  • Unpack it

gunzip installer.img.gz

  • Install dcfldd (Note: if you do not want to install dcfldd just use dd instead – dcfldd displays a progress message)

sudo aptitude install dcfldd

  • Check that your SDHC card is being recognized properly. Most probably, you will recognize it by its size

sudo fdisk -l

image

The SDHC we are going to write to is /dev/sda – I identified it by its size, 16 GB. In the screenshot above you can also see the partitions in each drive.

Attention: Please ensure that you are going to write the the correct target!! Once again, the data on the target WILL be lost. If in doubt, please shutdown your Raspberry Pi and remove all unneeded storage devices – only leave the internal SDHC card and the SDHC you are going to bootstrap.

Attention: Before proceeding, check that you really do NOT need the data on the respective drive anymore. If in doubt, plug it into another machine, for instance an Ubuntu desktop machine to review it’s contents. Please note, that Windows will not recognize Linux partitions.

The other “disk” here ( /dev/mmcblk0) is the SDHC card inserted into the Raspberry Pi directly, from which it boots. As you see, I’ve used a 4 GB card, here.

  • check that no partitions from your target SDHC card are mounted:

mount -l

image

You have to look for /dev/sdaxx here (the device we are going to write to in a second). In this first screenshot, no partitions from this drive are mounted.

image

In this screenshot, we have /dev/sda1 (the first partition) mounted on /mnt/my_mountpoint. If that is the case, you have to unmount it:

sudo umount /dev/sda1

Change the device name accordingly to the partition(s) mounted in your setup. Also recheck using mount -l whether the unmount was successfull.

Writing to the SD Card

  • Now we can write the image to the new SDHC card:

dcfldd bs=4M if=/tmp/installer.img of=/dev/sda

Assuming your image’s name is installer.img, and your device name (the SDHC card) is /dev/sda. Please change accordingly!! The block size 4M should be OK – if it does not work for you (errors …), try 1M instead.

This will take a while – once it is finished, it should display something like this:

root@raspberrypi:/tmp# dcfldd bs=4M if=/tmp/installer.img of=/dev/sda

18+1 records in
18+1 records out
root@raspberrypi:/tmp# ls

Booting into Raspbmc

If you followed the instructions, you should be all set to boot into Raspbmc. Turn off your Raspberry Pi (using halt for instance), switch the SD cards and turn it back on again!

The network setup of Raspbmc will try to connect to the Internet – ensure that the LAN is attached to a DHCP router connected to the Internet, and download the latest release. It will show you a couple of dialogs during the setup, but mostly it is a very straighforward thing. Go grab a cup of coffee, like the installer recommends.

raspbmc-network-installer

Raspbmc will by default install and expand to the entire SD card.

The device will then reboot itself – and you can start to enjoy Raspbmc!

raspbmc-on-Raspberry-Pi

Raspbmc even supports GrooveShark Anywhere:

raspbmc-Grooveshark-Anywhere

Optimization WordPress Plugins & Solutions by W3 EDGE