Table of Contents
- Physical Description of a Raspberry Pi
- Model A
- Model B
- Model B+
- Model B+ Version 2
- Raspberry Pi Zero
- Zero Wireless
- Model B+ Version 3
- How to use a Pi with no Accessibility Tools Installed
- Running ‘Headless’
- The IP Address
- Host Software
- Writing a Memory Card
- Arch Linux ARM
- Host Names and Your LAN Router
- Raspberry Pi ALSA Driver and Stuttering text-to-speech
I don’t intend in this guide to replace the wealth of good advice and information available from the pages of the Raspberry Pi Foundation, but rather to note those points, hints, tips, tricks and pitfalls that are appropriate to blind or visually impaired Raspberry Pi users.
It may help you to avoid some of the pitfalls, and answer some of the questions, which I was faced with before and shortly after I bought my first Raspberry Pi, with little or no other information available online to help.
Physical Description of a Raspberry Pi
Not available at the time of writing.
Holding the board with the major components uppermost and the longest sides vertical, like portrait printing mode, and with the very obvious double row of GPIO pins in the bottom left corner; call the top edge north, the long edge to the right east, the short edge closest to you south, and the long edge to your left west.
Going round the board clockwise from north to west:
In the centre of the north edge is the USB socket. This will take 2 USB devices.
To the east of this and still on the northern edge is the ethernet port. You can plug a network cable into this port for a wired connection to a network.
in the centre of the eastern edge of the board is the HDMI video connector. This is for plugging in your HDMI television.
At the eastern side of the southern edge of the board is the micro-USB power socket. This is quite
fragile and I’d recommend not repeatedly pulling out the power connector and plugging it back in.
To power off the Raspi, once you have cleanly shut-down Linux, simply power off by unplugging the mains adaptor or whatever power source you are using.
In the centre of the underside of the southern edge is the SD card holder. To keep costs low, a very simple plastic card holder has been used. The SD card should be inserted VERY GENTLY with the gold contacts uppermost toward the surface of the board and towards the centre. It is not possible to over-state the need for care in inserting and removing a memory card from this holder. It must be the most fragile part of the whole assembly.
On the western edge, furthest south is the RCA jack for composite video. Many of the now redundant portable analogue televisions in the UK have composite video in so this is a good option if you have one available. Of course, this is video only and does not carry sound.
To the north of this connector is the 3.5mm stereo audio output jack. This is a fairly high impedance output and can produce very loud audio, so careful with those headphones.
That completes the tour of the connectors on the edges of the board.
In the south-west corner of the board is the GPIO header connector. This has two rows of thirteen pins.
The pins are numbered from the south to the north. The row closest to the western edge of the board are numbered evenly from 2 to 26. The row furthest from the western edge are numbered oddly from 1 to 25.
The pin connections vary from revision to revision of the board so pay close attention to the Foundation web pages. I don’t intend to detail the connection orientation of this GPIO header here.
Description of the CSI (Camera Serial Interface) and DSI (Digital Serial Interface) headers will be added when I have the data.
On July 14 2014 the newer Model B+ was released. Here is a description of this version.
Again holding the board with the obvious GPIO pins uppermost and in the bottom-left corner of the board, call the top edge of the board ‘north’.
From left to right along the north edge there are now two USB connectors, each bearing two USB sockets for a total of four.
At the extreme right edge of the north side is the RJ45 network connector.
On the eastern edge of the board are, from north to south; a 3.5mm jack socket that now carries both the analogue audio and composite video. Then the HDMI monitor connector, then a micro-USB power connector on the upper surface of the board.
In the centre of the southern edge of the board, on the underside, is a micro-SD card holder. This is a spring-loaded push-to-insert and push-to-release socket which is a great improvement on the previous full-sized SD card holder.
On the western edge the only thing of interest is the GPIO bus. This is the double row of pins, a total of forty. This is an increase from the previous Model B’s 26 pin header.
The board now has curved corners and four mounting holes which will take M2.5 hardware. There is a hole in each of the south-west and south-east corners, and on the edge of the board just behind the USB and RJ45 connectors on the western and eastern edges respectively.
Model B+ Version 2
In February 2015 the Version 2 Model B+ was released.
This is a quad-core CPU, with twice the RAM and the same very impressive GPU.
Physically, from the point of view of ports and sockets, it is identical to the Model B+.
Raspberry Pi Zero
On the 26th of November 2015, the Raspberry Pi Foundation released an exciting new version of the Raspberry Pi.
This new version is called the Raspberry Pi Zero, and represents a very significant advance in terms of the cost of a RaspberryPi.
At about $5 each, there is a huge saving over the previous versions.
But this is a cut-down board, which is intended to find it’s niche in robotics and Internet-of-things applications.
There are no full-sized USB ports and no ethernet port. And as supplied there is no GPIO header, although there are holes for soldering in a 40-pin header which is totally pin-compatible with the Model B version 2.
Holding the board in the portrait position, with the three very obvious small ports on the right side, here is a description going round the board…
North edge, no connection. Northern-most on the eastern edge of the board is the power micro-USB connector. Slightly further south is the micro-USB port. I believe this is a USB-otg port. Next on the eastern edge is the micro-HDMI port for connection of a TV/monitor. There is no analogue audio.
On the top surface of the southern edge of the board is a push-pull micro-SD card slot, unlike the spring-loaded card slot on the B+ and B+2.
In the south-west corner there is a matrix of 40 holes, into which can be soldered a 40-pin IDC header. The pins of this GPIO bus are pin-for-pin compatible with the Model B+ and Model B+ version 2.
That is it. There are no ports for analogue audio or composite video, no ethernet and no full size USB ports.
The CPU is the same SoC as the original Model B, and has 512MB of RAM and a single core.
On 28th February 2017 a new version of the Zero was released. This new version is the same physical layout as the original Zero, with the addition of both WiFi and Bluetooth.
Model B+ Version 3
On the 29th of February 2016 the Raspberry Pi Foundation released the Model B version 3.
Physically this is identical to the Model B+ version 2, with one notable exception, that it has a friction-fit micro-SD card holder instead of the spring loaded holder of the B+ version 2.
And some LEDs and other things on the board have moved to accomodate other changes like the inclusion of WiFi and Bluetooth.
Refer to the board description of the Model B+ for physical layout.
It fits most, or possibly all cases designed for the Model B+ version 2.
Since this is the first version 3 Pi I’m not even sure I should be calling it a B+.
How to use a Pi with no Accessibility Tools Installed
At the time of writing there are no distributions of Linux available online which include accessibility features like screen-readers or Braille display drivers enabled out-of-the-box.
So how can I use my Raspberry Pi?
Both of the distros I have tried to date, the Raspbian Wheezy and the Arch Linux distros available for download from the Raspberry Pi Foundation downloads page, have an SSH (Secure Shell) server enabled by default. This makes it possible to connect to the Raspberry Pi from another computer, such as a Windows desktop or laptop machine, or a Linux machine.
To connect directly to the Raspberry Pi without connecting it to your home network you will need a crossover network cable. Note that Mac computer ethernet ports are auto-sensing and a standard ethernet cable could be used to connect between a Mac and your Raspberry Pi.
However, both the Raspbian and the Arch Linux distros are pre-configured for the Raspberry Pi to use
DHCP (Dynamic Host Configuration Protocol). That is, they don’t have an IP address until they are
connected to a device containing a DHCP server, such as your home network hub or broadband router.
If you connect your Raspberry Pi directly to another machine with a single cable, you will need to either change the Raspberry Pi to have a static IP address, in the same subnet as the host machine, or use a technique called ‘IP masquerading’. How to do this is outside the scope of this guide.
Much better to connect your Pi to your home network and let the gateway router issue an IP address.
Once you have succeeded in connecting in this way, you could, if so desired, change the Pi to a static IP address.
The IP Address
Once you have connected your Raspberry Pi to your home network, inserted a correctly written memory card and booted the Pi you will need to find the IP address.
Here we encounter some problems. There is a large number of different broadband routers and hubs out there. Most of these have a management web page from which you should be able to find the host name or IP address.
The accessibility or not of these web pages can be a bit hit and miss. My router is a BT Home Hub, and although some pages in the management system are quite complex, the host names of devices currently connected to my wired network appear on the front page.
From this I have been able to discern that the out-of-the-box host names for the two distros I have used are:
- raspberrypi for Raspbian Wheezy
- alarmpi for Arch Linux
One way of easily finding the IP address from a Windows machine is to open a command shell and type:
ping -c 1 raspberrypi
For Raspbian, or
ping -c 1 alarmpi
If the Pi is reachable, you should see some replies from the Pi along with the IP address.
If the result is destination host unreachable, either the Pi is not configured or connected correctly, or the MODEM/router to which the two machines are connected does not contain the ability to resolve host names. If this is the case you will need to find out the range of IP addresses that your router is configured to issue to machines using DHCP.
When you have discovered this range, try pinging some of these addresses, being careful to correctly identify the Pi. If you get a reply from an address which you think might be the Pi, try it again with the Pi unplugged from the network. If the replies have disappeared, that was the correct IP address. Doing this should not result in the Pi being given a different address when you plug it back in.
If you are using a Windows machine to connect to your Raspberry Pi with an SSH connection, I know of two different pieces of host software which are accessible:
Probably the most well known of these two is PuTTY. Download PuTTY from here.
However it is important to note that the way in which PuTTY does it’s screen output is non-standard on Windows, which may lead to some accessibility difficulty. The screen-reader I use on Windows is NVDA, the installation of which includes an app module to make PuTTY more accessible. I still find Tera-Term more usable though.
When installing Tera-Term it is important to note one phenomenon I have found using NVDA, which
might equally have ill effects with other screen-readers; the install gives the option of installing
a macro-helper sub-program. When I installed this I got a program which appears in the system-tray
in Windows and which obviously ‘hooks’ into key-strokes and menu selections for recording macros.
This caused menus to become silent for some reason. I fixed it by stopping the Tera-Term macro recorder from starting at boot.
This macro recorder is called ‘collector’ by Tera-Term.
You need to also be careful to install a version of Tera-Term which includes the SSH plug-in.
You can download Tera-Term from here.
From a Linux machine, simply typing ssh at a terminal prompt followed by the user and the hostname seperated by an ‘@’, like this:
Will launch an SSH session and from there you can give the password and connect.
Here are instructions for using SSH from a Mac, provided by Erik Burgraf.
Mac OS includes an accessible shell called terminal.
You can find terminal by opening the finder from the dock, pressing command shift A to open the applications folder, Typing u, or UT or arrowing down to utilities and in the utilities folder, press T for terminal.
Once terminal is focused, you can press command shift T to add terminal to the dock since you may be using it frequently from now on.
press command O to open terminal.
To connect to your pie, type ssh followed by a space, then username, at sign, host name like this:
Voiceover reads new output from the terminal automatically and should prompt you for the password. If you want to read the terminal window’s history, press control option left arrow.
Thanks for the help on this Erik.
Writing a Memory Card
The Linux files you will find on the Raspberry Pi Foundation download page are .img files. These are byte-for-byte images of what will be on a card, and as such simply dragging and dropping or using copy and paste to place them on a card will not work.
Here we run into some difficulty. The Windows program recommended by the foundation is called Win32DiskImager, which is written with a GUI library called Qt, which I have found to be notoriously poor on Windows for accessibility. I am not sure how other screen-readers cope with it but NVDA finds it totally quiet. I have partially written an app module for NVDA to fix this but as I have exclusively switched to writing cards with Linux, this work is incomplete.
To use Win32DiskImager you may need sighted assistance.
There is an alternative application called WinFlashTool. One of the nice features of winflashtool is a check-box which will make it impossible to accidentally write a .img file to one of the fixed disks in your system. Download WinFlashTool from here.
You can find a page about how to use WinFlashTool to write an SD card on Windows here.
[On this page you will find instructions for how to write an SD card using Linux.
When the above was first written, some time in 2013, the above was correct to my knowledge and within the limits of my knowledge.
With the re-launch of the new-look Raspberry VI Web site I have added this Addendum.
Arch Linux ARM
Some time, I think in early 2015 the Arch Linux image which was previously available for download from the Raspberry Foundation downloads page stopped appearing.
However it is possible, with a Linux desktop machine to create your own. A process I intend to document elsewhere on this site.
Host Names and Your LAN Router
It was previously my assumption that all domestic routers provided a name resolution service and that consequently the name of a host, a Linux machine on your home network, would always be available to see on the management page of that router.
I now know that this assumption is incorrect and that in some cases, possibly dependent on router configuration options, a host name is not available and an IP address will have to be provided to an SSH command, to PuTTY or to Tera-Term.
Raspberry Pi ALSA Driver and Stuttering text-to-speech
By now the problem of stuttering text-to-speech is well documented elsewhere on this site and the ways in which I have been able to solve this in Raspbian.