Give the Raspberry Pi B+ SATA, Wi-Fi, Bluetooth & More..

Supstronics X300    Send article as PDF   
I have been patiently waiting the release of the new Raspberry Pi B+ Expansion Board from Suptronics, the X300 for the last couple of months.The X300 is Raspberry Pi B+ Expansion Board that adds WiFi, Bluetooth, RTC, Microphone input, 3.3W Stereo Audio & SPDIF output, IR receiver, SATA and More.

Supstronics X300 Add-on Board

The X300 is only fully compatible with Raspberry Pi Model B+. The expansion board is directly connected on top of the Raspberry Pi B+using the board’s GPIO header pins, with no wiring nor soldering required.The 40-pin header of the R-Pi B+ is fed through in order to support existing expansion boards.

Supstronics X300 Add-on Board

Package Contents:

  • 1 x X300 expansion board
  • 1 x USB adapter
  • 1 x 2.4GHz WIFI antenna
  • 4 x nylon spacers (M3 x 20mm)
  • 8 x nylon screws (M3 x 6mm)

Supstronics X300 Add-on Board Layout

X300 Board’s Capabilities:

Supstronics X300 Add-on Board

SupTronics has produced a publicly available SD image of Raspbian that is bootable on Raspberry Pi B+hardware and X300 Series expansion board.

Raspbian Image Notes:

  • Based on Raspbian (Release date: 2014-06-20)
  • Rpi-update is included
  • Updated to the Latest Raspberry Pi firmware and kernel as of July 5th 2014
  • Alsamixer is included and configured
  • RTC time is configured
  • IR Remote is configured
  • WringPi is included

Download the Raspbian Image:

The pre-configured 884 MB Raspbian Image can be downloaded from this link

Raspbian Image Install:

To install the Raspbian Image file, you will need to unzip it and write it to a suitable 4G or larger SD card using the UNIX tool

. Windows users should use Win32DiskImager. Do not try to drag and drop or otherwise copy over the image without using

or Win32DiskImager – it won’t work.

Supstronics X300 Add-on Board

If you’re still not clear on what to do, the community responsible for the Raspberry Pi Wiki has written a great guide for beginners on how to set up your SD card for the Raspberry Pi.

Set RTC’s Time

Get the right time set on the Pi

pi@raspberrypi ~ $


example: 2013 Jan 4 , 11:39:00,

Write the system time to the RTC


Verify the time




Power Supply:

X300 Expansion Board supplies the RPi with a regulated +5V through the GPIO header using a 2A poly-resettable (PTC) fuse. The X300 has wide voltage input range (6~21vdc). This means the RPi can be powered from a wide variety of external sources such as batteries, 12V power adapters, solar battery sources, etc.

  • Recommended Power Adapter : 110~240V A.C. input, 12V D.C. 2A output  
  • Dimension of input plug (Unit: mm)

Supstronics X300 DC Socket & Plug

Do not connect a +5V supply through the Raspberry Pi micro-USB connector when using the X300 Expansion Board.

If you intend to have the X300 power an attached SATA Drive, you will need to use a 12V D.C. Source of at least 2 Amps. A 3-5 Amp, 12V Switch Mode Power Supply can be regularly picked up for as little as $10.00.

Supstronics X300 Add-on Board

X300 Expansion Board supplies the RPi with a regulated +5V through the GPIO header using a 2A poly-resettable (PTC) fuse

Microphone Input & Audio Output

There is an issue with the Pi’s USB that meant it could become overwhelmed with data which causes popping and bubbling noises to be included in your recordings, and sometimes, no output whatsoever. This can be fixed with an update of the Pi’s firmware:





After the update is complete, Reboot your Raspberry Pi,


This will install a package of ALSA utilities if you don’t already have them (ALSA stands for Advances Linux Sound Architecture).


This will run the AlsaMixer application in a LXTerminal window:


Supstronics X300 Audio Setup - 01

This shows the on-board audio device’s playback control (note that the chip is called “Broadcom Mixer”).

Press “F6” and you should see a small pop-up “window” with all the available sound cards listed. The item “0 bcm2835 ALSA” is the on-board audio device, and the item “1 C-Media USB Audio Device” is the USB audio device. Use the arrow keys to select the “1 C-Media USB Audio Device” item and press Enter:

Supstronics X300 Audio Setup - 02

This shows the playback controls for the USB audio device. Use the right and left arrow keys to select the control you wish to adjust and then use the up and down arrow keys to adjust the level. With “Speaker” selected, pressing “m” key on your keyboard will toggle the mute function on the audio output (when muted, “MM” appears instead of “OO” at the bottom of the control). Likewise, the “Mic” control  (which actually refers to the level of microphone input fed back through to the audio output) can be muted, and is shown so in the above screenshot (note the “MM” at the bottom of the control). The “Auto Gain Control” item can not be adjusted with the arrow keys, but can be turned on and off by pressing the “m” key.

Supstronics X300 Audio Setup - 03

Press “F4” the display will change to show the audio capture control for the USB audio device:

Supstronics X300 Audio Setup - 04

This control is used to adjust the level of audio input from the audio device to the Raspberry Pi, and may be muted by pressing the space bar on your keyboard (but this will not mute the audio fed back through to the audio output).

Press “F5” you will be able to see and adjust the playback and capture controls together in the same window:

Supstronics X300 Audio Setup - 05

The above screenshot shows the “Speaker” playback control set to 80%, the “Mic” playback control is muted (and also reduced to zero), the “Mic” capture control set to 50% and the “Auto Gain Control” is turned on.

The following final section of this post is optional….

There is a “proper” graphical user interface available for the AlsaMixer application. To download and install it type the following at the command line prompt and press Enter:


Once installed, you will find the “Alsamixergui” application under the “Sound & Vision” submenu of the “Start Menu” in the LXDE GUI.

Supstronics X300 Audio Setup - 06

This application works in a similar way to the AlsaMixer application (although note that in the above screenshot the “Mic” controls have been swapped over). In practice I actually found the basic AlsaMixer application (when run in a LXTerminal window) easier to use than the AlsaMixerGUI version, not least of all because the GUI version does not allow you to choose which audio device you want to control – you can only control the “default” ALSA audio device.

To make the USB audio device the default ALSA audio device, you need to create a file called “.asoundrc” in the ”

” folder containing the following text:


Supstronics X300 Audio Setup - 07

Save your changes by pressing Ctrl-x then Y. You should be able to control the USB audio device using the AlsaMixerGUI application. The above procedure assumes that the on-board audio device is designated “card 0” and that the Xseries expansion board audio device is designated “card 1”, but this should be the case as long as you do not have any other audio devices connected to your Raspberry Pi.

Let’s record the sound now.


The -vv option displays extra information on the screen as well as a volume meter, this should be peaking at around 95% on the loudest sounds, if it is at 100% all a lot of the time then you are probably recording distortion.

Playback the recording with aplay:


Audio Input and Output Interface:

Supstronics X300 Audio I-O

Setting the Real-Time-Clock’s Time

Add the RTC kernel module to the

list, so its loaded when the machine boots. 


And add:

Supstronics X300 RTC - 01

Save your changes by pressing


Create the DS1307 device at boot, edit

by running


And add:



Supstronics X300 RTC - 02

Save your changes by pressing



Reboot your Raspberry Pi


Get the right time set on the Pi ,



(MM= Month, DD= Date, HH= Hour, MM= Minute, YYYY= Year, SS= Second ) 

example:  2013 Jan 4 , 11:39:00 ,

Write the system time to the RTC ,


Verify the time ,


Setting Up the Infra-red Remote:

Installing LIRC


Add the two lines below to /etc/modules . This will start the modules up on boot. Pin 8 bellow will be used to take the output from the IR sensor.



Supstronics X300 IR - 01

Save your changes by pressing



and have it appear exactly as shown below.


Supstronics X300 IR - 02

The highlighted text are the parts that will need changing, though it’s worth checking the rest of the text incase you have a different initial configuration.

Save your changes by pressing


Download the lircd.conf  (For the remote supplied by SupTronics) file and save to

Replace the existing

file (which is most likely empty) with the you just downloaded.




Test your remote,


Your commands will appear in the console when you press buttons on your remote. Press Ctrl-c to exit this.

SATA Port:

The SATA port allows you to connect SATA devices to your Raspberry Pi, a very useful tool for data transfer, backup and cloning. It supports most  SATA devices such as CD ROM, DVD ROM, CD drive, 2.5 inch hard disk and 3.5 inch hard disk.

Installation for SATA Drives:

  • Connect you SATA Drive to the SATA port with a SATA cable.
  • Connect SATA Power Cable to a power adapter which is used to power hard disk OR to the power connector on X300 (Output voltage of power adapter used must be 12Vdc).


Required additional hardware

A computer or device with a Bluetooth terminal software.

To establish a communication with the Raspberry Pi over Bluetooth you need another device that can speak Bluetooth. If your computer has a Bluetooth adapter then you just need to find a terminal software that you can use to send and receive data, like HyperTerminal on Windows, or screen on OS X and Linux. A computer is not the only choice, though. For example, I will use my Android cell phone with the free

app installed. 

Raspberry Pi configuration

I’m going to assume you are running a recent release of Raspbian on your Raspberry Pi. If you are running another OS then you will need to find out how the changes below are done in your system.

By default the Raspberry Pi is configured to write boot time messages to the serial port, and also to start a login console on it. Unfortunately, the default baud rate that the RPi uses for its serial port is 115200 bps, while the Bluetooth module comes preconfigured to 9600 bps.  There are two config files that need to be updated.

File /boot/cmdline.txt contains the kernel options that are used to boot the system. In my Raspbian based system this file contains the following options.


​Change to


The second configuration file is /etc/inittab. Inside this file you have to locate the following line:


Change to

With those changes made the RPi is configured to talk to the Bluetooth module. If you now power up your Raspberry Pi you will notice that the LED in the Bluetooth module blinks rapidly. This is the sign that the Bluetooth module is ready and waiting to be paired with another device.

Connecting from a Bluetooth terminal

Now leave the RPi running with the Bluetooth module in its blinking state and go to the Bluetooth enabled computer or smartphone that you will connect to it. Your device should now find the Bluetooth module with the name

when you set it to discover devices.

If you are using an Android device with

then start the app and from the app menu select “Connect device“. Android does the baud selection automatically so you don’t have to configure it. From a terminal software running in a computer it is likely that you will need to configure the speed, number of data bits per character, parity, and number of stop bits per character. The values you need to use are:

  • Speed: 9600 bps
  • Data bits: 8 bits
  • Parity: None
  • Stop bits: 1 bit

The Bluetooth module comes preconfigured with a PIN number. To complete the connection your computer or smartphone will ask you to enter this PIN. The factory default PIN is


The LED in the Bluetooth module will now stop blinking and remain lit, indicating that it has made a connection.

And here comes the fun part. You need to reboot the Raspberry Pi so that the new serial port settings take effect. To reboot the RPi run the following command in a local or network shell:


Now watch the Bluetooth terminal on your PC or smartphone while the Pi reboots. Boot messages should be appearing on your terminal, and as soon as the RPi is up you should get a login prompt there as well.

You can now login from your Bluetooth terminal and use the command line prompt as you normally would over a local or network shell.   

Configuring the Bluetooth module

Firstly you will need to install minicom into your RPi using the following command:

pi@raspberrypi ~ $ sudo apt-get install minicom

The Bluetooth module comes preconfigured from the factory with a set of defaults, which are:

  • Baud rate: 9600
  • Bluetooth ID: BC04-B
  • PIN: 1234

But these values can be changed by sending special commands through the communication channel. Now that the Raspberry Pi is connected to the module we can try this.

These special commands that configure the Bluetooth module can be sent from a connected remote device, or they can be sent from the local system, in this case the Raspberry Pi. Since the Raspberry Pi is the star of the article I’m going to also use it to do the configuration.

Here is a quick summary of the most useful configuration commands:

Command Description
AT Test the communication with the Bluetooth module.
AT+VERSION Report the module’s version number
AT+NAMEname Change the Bluetooth ID to name (maximum 20 characters).
AT+PINnnnn Change the PIN to nnnn, which must be a four digit number.
AT+BAUDn Change the baud rate. Use one of the following values for n:
2: 2400bps
3: 4800bps
4: 9600bps
5: 19200bps
6: 38400bps
7: 57600bps
8: 115200bps

One tricky aspect of sending these commands is that the Bluetooth module has a very short timeout, so all the characters in a command must be entered really quickly. The safest way to get the entire command in time is to type it in a text editor window and then use copy/paste to send it really fast.

To send the commands we can use minicom. So let’s fire it up one more time:


Note that it isn’t necessary to have a connection to do this, so you can do this while the Bluetooth module is in its blinking state.

You now need to use any method to get the string AT into the clipboard, and then hit paste inside the minicom window to send the command to the module.

When you send AT the module should respond with this in the


If you get this response then you know that everything is all right. If you don’t get a response then for some reason the Raspberry Pi is unable to communicate with the Bluetooth module.

When I send AT+VERSION to the module I get the following response:

To change the baud rate to the fastest rate of 115200 we need to issue the command

, and the module will respond with:

Because the baud rate was changed now the communication will break, and we will need to exit and restart minicom with the updated speed:


To change the name of the module to MyBT we must issue the command

, and the module will respond with:

And to change the PIN to 4321 the command is AT+PIN4321 and the response from the Bluetooth module will be:

Note that when the name and/or the PIN change the module requires a power cycle for the changes to take effect.

Also don’t forget that if you change the baud rate and later want to re-establish the serial console you will need to change the two config files to reflect the new baud rate you have selected in the Bluetooth module.


You can pick up an X300 Expansion Board to compliment your Raspberry Pi B+ for around $70.00, depending on the vendor. I suggest a search of eBay as a place to start, as that is where I found mine. I imagine many Raspberry Pi vendors will soon be stocking this little beauty!

A great stocking filler would be my excuse to get…….

When you look at purchasing the individual components of the X300 Expansion Board, its value at a price of $70 can easily be justified. 

The build quality can not be faulted. Top quality Hardware and Electronic Components, which should equate to a very reliable and long lasting RPi Expansion Board. All the connectors are sensibly situated, accepting perhaps the SATA Power Supply Socket which is hard to access with another Expansion Board on top of the X300.

On the down side besides the SATA Power Supply Socket, I would have liked to have seen a USB TO UART port, as is available with the Waveshare DVK512 Expansion Board. This allows for quick and easy access to the

. That said, there is no reason why you couldn’t attach a Waveshare DVK512 Expansion Board as well as the X300 Expansion Board to your Raspberry Pi B+ to give you a very powerful interface to the real-world.

Previous Post
Raspberry Pi connected to Arduino via I2C

Connecting an Arduino to a Raspberry PI using I2C

I'm intending to use several Arduino Boards as a cheap means of controlling a number of RFID Readers which will be used to detect the position of Locomotive Engines on ... Read more

Next Post

Raspberry Pi Network File Share Using Samba (SMB)

You can share your Raspberry Pi's files and folders across a network using a piece of software called Samba, a Linux implementation of the Server Message Block protocol. The following ... Read more

Short URL:

Leave a Reply

Your email address will not be published. Required fields are marked *

Do NOT follow this link or you will be banned from the site!
error: Content is protected !!