Recent Changes - Search:



Deprecated

Overview

Prev Next Edit this page to change styles

--- Boxes and outlines ---

--- Headers beyond ordinary "!" level headers

--- Stegi specific stylings ---

--- Text warnings, notices, hilights ---

--- Directory paths ---

--- Calendar specific ---

Current Version

05/31/2023: 2.0.0

License

PiBox is an open source software project. All software developed for the project is released as open source under the BSD0 license to permit customizations and porting to other hardware platforms. All hardware designed for the project is released as open hardware.

Overview

PiBox is a build system wrapping other build tools to give them a common GNU Make target structure. Originally developed as a tool for learning how to build custom Linux-based platforms for embedded systems, PiBox has grown into a tool for building complete systems. Multiple systems are available now for multiple hardware platforms and many more are planned for future major releases.

The PiBox build system is used to generate a PiBox Development System, a custom Linux distribution for the Raspberry Pi. Artifacts from this build include a cross toolchain and a staging tree that allow application development on a host system different from the target system. These features are used to create applications, packaged in the opkg format, that generate the various other systems that make up the PiBox ecosystem.

The PiBox build system is available as source from GitLab. PiBox releases are also provided as binaries though developers will want to use the build system to do core customizations.

What PiBox Is

  • PiBox is a developer environment.
  • PiBox is a DYI project. It requires some understanding of the system being built. PiBox attempts to explain, unify and simplify as much of that as possible.
  • PiBox is a software project. It is based on off the shelf hardware components.
  • PiBox is open source as much as possible but is not restricted to open source components.
  • PiBox is a playground for developers. Dig in and learn how these kinds of systems get built.
  • PiBox is one word. No spaces, no hyphens.

What PiBox is Not

  • PiBox is a not a desktop. Use one of the other popular distributions for that.
  • PiBox is not a local data store. It is designed to keep session data in memory. Application specific implementations will need to handle long term storage issues on their own.
  • PiBox is not an end product. PiBox is for DIYers.
  • PiBox is not focused on end users. It is focused on what developers want.

PiBox Development System

The PiBox Development System is intended to provide a lightweight, low-memory footprint base upon which purpose-specific systems can be created. Instead of providing an extensive software stack with an application friendly API like Android, PiBox provides an open and lightweight GNU/Linux development platform. PiBox is a build system that can be used to customize the development platform for any hardware supported by upstream toolchains, kernels and firmware.

The PiBox Development System includes out of the box support for:

  • Network configuration UI utilizing the PiBox Network Configuration UI and associated library.
    • Wireless Access Point configuration (WPA2 Personal)
    • GTK+ and web-based network configuration utilities, including wifi scanner
  • User customizable support for USB adapters via mdev-based USB handler script
  • X over framebuffer featuring Matchbox's stacking window manager, customizable with user applications to produce consumer-oriented systems UIs.
  • opkg support
  • Raspberry Pi userland interfaces to GPU firmware and other hardware
  • Reduced SD wear via tmpfs for runtime files
  • Overlay based squashfs root file system
  • Servers and daemons
    • NFS and smb
    • sshd
    • dbus
    • ntpd

The PiBox Development System can provide any root file system utilities available from BusyBox and Buildroot.

PiBox Development Platfrom is small, less than 1G for the root file system, and runs comfortably inside 256MB of memory, both of which leave plenty of space for custom application development.

Additional kernel configuration tweaking may help reduce the overhead the kernel takes on overall memory usage, which is about 4MB.

Components

The PiBox Development System is a GNU LibC based platform built using the following open source utilities.

Additional support comes from and Raspberry Pi Userland repositories.

Status

The PiBox Development System is stable and ready for use. It can easily be modified to provide additional features in the core but is intended to be extended with opkgs. Multiple opkgs exist to support PiBox based systems and provide examples of how to cross compile applications for use with the PiBox Development System.

PiBox Based Systems

The development platform on its own isn't very useful. It's purpose is to provide a base upon which custom systems can be built and deployed. PiBox Systems are based on a very simple philosophy.

  Keep it simple.  Keep it light.  Avoid software bloat.

PiBox Systems consist of a variety of application packages that turn the Development System into a device with a specific purpose (as opposed to general purpose use, like a Desktop). Most are tools written specifically in C. PiBox Systems, by philosophical choice, avoid tools written in scripting languages where possible. The reasoning for this is based, at least in part, on the paper Energy Efficiency across Programming Languages. The future problem of computing is to simply use less power.

The following is a list of systems that currently exist for PiBox.

PiBox Media System

PiBox Media System provides media services that play audio and video files and serves that media to other PiBox Media Systems on a local network. Media files are provided on USB-mounted memory sticks. PiBox Media System supports USB webcams streamed on the console and over a web interface. Media Systems's can be wifi clients on a local network or can act as a router for a local network when configured in hostap mode.

PiBox Media System utilizes hardware accelerated video playback using the Raspberry Pi omxplayer media player wrapped in custom controls. It also includes applications for playing music and supporting the XMPCR, an old XM Radio USB device.

PiBox Media System was originally designed for use in lightweight travel trailers as a replacement for overweight TVs and supporting video players. It can be used in the home or office for any media playback need. A desktop application, VideoLib, can be used to generate databases of movie and TV files for use with PiBox Media System

PiBox Media System is controlled via a usb keyboard and mouse with future control through an Android app. It can be used on the official Raspberry Pi 7" touchscreen display.

Status

PiBox Media System software is considered stable for general use.

PiBox Player System

PiBox Player System provides playback services of media files served from local storage or PiBox Media Systems on a local network. The PiBox Player System is a lightweight variation of the PiBox Media System.

PiBox Media System is controlled via a usb keyboard and mouse with future control through an Android app. It can be used on the official Raspberry Pi 7" touchscreen display.

Status

PiBox Player System software is considered stable for general use.

PiBox Kiosk

PiBox Kiosk is a photo/video frame solution that can playback static images and video files without the need of a database. It supports the Raspberry Pi 7" touchscreen for fast forward, skip forward/back, and pause/play operations. The PiBox Kiosk is a customized variation, with fewer features, of the PiBox Media System, showing how the use of opkgs can change PiBox from one system to another.

Status

PiBox Kiosk software is considered stable for general use.

PiBox Auto-Kiosk

PiBox Auto-Kiosk is a touchless system for automated playing of video files in sequence. This is an extension of the PiBox Kiosk but without any user controls. This is, for example, suitable for playback of videos using projectors on holidays.

Status

PiBox Auto-Kiosk software is considered stable for general use.

PiBox PiSentry System

PiBox PiSentry System is designed to run on a Raspberry Pi 3 with a GPIO connected TFT (touchscreen) display. It manages a single USB webcam that can be configured using low frame rate on the TFT display and can be accessed remotely over wired or wireless networks using a web browser. PiSentry includes a simple network configuration utility, PiNet, that turns the PiSentry node into an Access Point to allow configuration of the Raspberry Pi WiFi client using a smartphone or other network device.

Status

PiBox PiSentry System is new for the 2.0 release. It works well with a specific TFT but should be considered a beta system with this release.

PiBox PiStore System

PiBox PiStore System is designed to run on a Raspberry Pi 3 with a GPIO connected TFT (touchscreen) display. It manages a USB connected hard drives or media sticks, displaying usage information on the TFT. Drives that are managed by the PiStore System are exposed to the local network as NFS exports or Samba mounts. PiStore includes a simple network configuration utility, PiNet, that turns the PiSentry node into an Access Point to allow configuration of the Raspberry Pi WiFi client using a smartphone or other network device.

Status

PiBox PiStore System is new for the 2.0 release. It works well with a specific TFT but should be considered a beta system with this release.

Future Development

Additional systems, applications and extensions based on the PiBox Development System are planned for the next major release. These include the following systems.

  1. Xeon: PiBox on the Pine64 PinePhone Pro, an RK3399-based phone, showing PiBox on a completely different ARM platform.
  2. Ironman: a home automation system with 7" touchscreen control and AES-128 encrypted communication and management of Arduino based devices.
  3. PiSentry: adding motion-activated camera that integrates with PiStore Systems and/or Ironman.
  4. PiDock86: A docker based vesion of PiBox Development System but ported to X86_64, showing how simple it is to go from one hardware platform to another.
Edit - History - Print - Recent Changes - Search
Page last modified on June 15, 2023, at 01:58 PM