Skip to content
Sources of Dockerfile generated Docker image "Debian with SSH, dbus and latest bluez bluetooth stack" for Hilscher’s netPI
Dockerfile Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
hooks Switch to multistage build Feb 7, 2019
init.d use fix tag 1.20180417 of userland tools Sep 18, 2019
.dockerignore Initial commit Jan 21, 2018
Dockerfile use fix tag 1.20180417 of userland tools Sep 18, 2019
LICENSE.txt Initial commit Jan 21, 2018
README.md Changed to Debian 10 Buster Sep 15, 2019

README.md

Bluetooth

Docker Registry  Image last updated 

Made for netPI, the Raspberry Pi 3B Architecture based industrial suited Open Edge Connectivity Ecosystem

Secured netPI Docker

netPI features a restricted Docker protecting the system software's integrity by maximum. The restrictions are

  • privileged mode is not automatically adding all host devices /dev/ to a container
  • volume bind mounts to rootfs is not supported
  • the devices /dev,/dev/mem,/dev/sd*,/dev/dm*,/dev/mapper,/dev/mmcblk* cannot be added to a container

Container features

The image provided hereunder deploys a container with latest bluetooth protocol stack to enable netPI bluetooth communications in a container.

Base of this image builds debian with enabled SSH, a source code compiled bluez stack bluez and firmware for the onboard BCM bluetooth chip BCM43438.

Container setup

Host network

The container needs to run in host network mode.

Using this mode makes port mapping unnecessary since all the used container ports (like 22) are exposed to the host automatically.

Privileged mode

The privileged mode option needs to be activated to lift the standard Docker enforced container limitations. With this setting the container and the applications inside are the getting (almost) all capabilities as if running on the Host directly.

Host device

To grant access to the BCM chip the /dev/ttyAMA0 host device needs to be added to the container.

To prevent the container from failing to load the BCM chip with firmware(when restarted), the BCM chip is physically reset by the container each time it is started. To grant access to the reset logic the /dev/vcio host device needs to be exposed to the container.

Container deployment

STEP 1. Open netPI's website in your browser (https).

STEP 2. Click the Docker tile to open the Portainer.io Docker management user interface.

STEP 3. Enter the following parameters under Containers > + Add Container

Parameter Value Remark
Image hilschernetpi/netpi-bluetooth
Network > Network host
Restart policy always
Runtime > Devices > +add device Host path /dev/ttyAMA0 -> Container path /dev/ttyAMA0
Runtime > Devices > +add device Host path /dev/vcio -> Container path /dev/vcio
Runtime > Privileged mode On

STEP 4. Press the button Actions > Start/Deploy container

Pulling the image may take a while (5-10mins). Sometimes it may take too long and a time out is indicated. In this case repeat STEP 4.

Container access

The container starts the SSH server and the bluetooth device hci0 automatically.

Login to it with an SSH client such as putty using netPI's IP address at port 22. Use the credentials root as user and root as password when asked and you are logged in as root.

Use bluez tools such as bluetoothctl, hciconfig, hcitool as usual. For a simple test call bluetoothctl to start the bluetooth interactive command utility. Input scan on to discover nearby bluetooth devices.

Container tips & tricks

For additional help or information visit the Hilscher Forum at https://forum.hilscher.com/

Container Automated build

The project complies with the scripting based Dockerfile method to build the image output file. Using this method is a precondition for an automated web based build process on DockerHub platform.

DockerHub web platform is x86 CPU based, but an ARM CPU coded output file is needed for Raspberry Pi systems. This is why the Dockerfile includes the balena steps.

License

View the license information for the software in the project. As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.ex.php/bluetooth) to start the bluetooth interactive command utility. Input scan on to discover nearby bluetooth devices.

N|Solid Hilscher Gesellschaft fuer Systemautomation mbH www.hilscher.com

You can’t perform that action at this time.