Written by: Kiran Kankipati Published: 30-Jan-2016
Raspberry Pi is often used as a single board computer for applications such as IoT, hobby projects, DIY, education aid, research and prototyping device. But
apart from these applications Raspberry Pi can be used for real-world applications such as in making a full-fledged networking devices. Raspberry Pi is a single
board ARM based hardware which is why it is also classified as ARM based SoC (System on Chip) computer. Since it is ARM based it is highly efficient, tiny
form-factor and lower in power consumption with moderate computational power. This will allow it to work several hours on emergency battery backup power supply
such as low-cost domestic UPS and or some renewable energy source, which is a prerequisite for a typical networking device. As we know quite often these need
to be switched on 24/7 and reliable.
ARM based SoC boards are already quite often being used as Networking devices. Here are some examples:
Wi-Fi Gigabit Router: Kasda KA1900, TP-LINK Archer C9, TP-LINK Touch P5 - BCM4709 - ARM Cortex A9 1 GHz SoC
For more details to find entire series of Broadcom ARM processor: https://wikidevi.com/wiki/Broadcom
This shows even a Raspberry Pi is an excellent platform for building customized networking devices such as Home routers, Firewall devices, network gateways,
IDS/IPS devices, Network monitoring, VOIP device, WAN Optimization devices, etc. So with a specific software meant for specific use-case any Raspberry Pi device
can morph into a tiny desktop, or into a serious Network Device. Now let us explore various Raspberry Pi based software projects each with a specific use-case.
Wi-Fi access point:
Here is a list of few projects (or software solutions) with which you can turn your existing Raspberry Pi device into a quick dedicated Wi-Fi access point.
Project: The Pi-Point Raspberry Pi Wireless Access Point
Project website: http://www.pi-point.co.uk
Pi-Point is one of the top ten projects on TechRepublic. With Pi-Point you can extend your existing WiFi Network, create an access point, and so on. In other
words you can make a Raspberry Pi device into a networking device and not only that you can also learn/debug/hack the network packets/data.
Project: Raspberry Pi WAN Emulator with TOFFEE-Mocha
Project URL: http://www.the-toffee-project.org/index.php/documentation/29-toffee-mocha-documentation-toffee-mocha-1-0-14-1-rpi2
TOFFEE-Mocha is an open-source WAN Emulation software which can be used to emulate (simulate) WAN networks. You can build test WAN networks and emulate WAN like
behavior with TOFFEE-Mocha such as packet delays, random packet drops, packet corruption and so on. TOFFEE-Mocha can also be used as a tool to build TOFFEE
WAN Optimization test setup at your lab. With the Raspberry Pi TOFFEE-Mocha release you can turn any Raspberry Pi2/3 into a dedicated WAN Emulator
(network simulator) lab testing device.
Benchmark Raspberry Pi and other embedded SoC with TrueBench:
TrueBench is an unique open-source benchmarking system in which the core system performance and efficiency parameters are measured at extreme high resolution
in the order of several million/billion µ-seconds for a given specific task. TrueBench is a part of The TOFFEE Project research. With TrueBench Raspberry Pi 3,
Raspberry Pi 2B and Raspberry Pi 2 are benchmarked and you can do a comparative analysis with standard mainstream x86 devices.
For more details: visit TrueBench
Off-Grid Solar Power System for Raspberry Pi:
When you choose to use your Raspberry Pi device as your IoT based remote weather station or if you are building Linux kernel (like kernel compilation) within
the same, you need a good uninterrupted power source (UPS). But if you are using it on site or in some research camping location you can choose to power your
Raspberry Pi device with your custom off-grid solar power source. Kindly read my complete article about the same
Custom Linux Kernel compilation in Raspberry Pi:
At any case if you are interested learning Linux Kernel internals with Raspberry Pi and want to custom inject your code in Linux Kernel and or build your network
stack for a networking device you can refer my video: