CM3-Panel how tos

How to configure a Chromium Kiosk

This how-tos explains how to create a simple Chromium Kiosk with the minimal amount of software installed

Create a Rasbian lite microSD following this article:

Install the following packages:

sudo apt-get update
sudo apt-get install chromium-browser
sudo apt-get install xorg

Create the systemd file to launch Chromium at startup: /lib/systemd/system/chromium.service. Change myurl with the url you need to open at startup.

Description=Launch Chromium

ExecStart=/usr/bin/xinit -bg black -fg white -geometry 132x36 -e "runuser pi -c 'chromium-browser --incognito  -kiosk --window-position=0,0 --window-size=800,480 http://myurl'"


Enable the new service

sudo systemctl daemon-reload
sudo systemctl enable chromium

Reboot or launch the service by hand now:

sudo systemctl start chromium

How to use omxplayer with an USB audio adapter

omxplayer filename --adev=alsa:hw:1,0 --aspect-mode fill

How to add an SPI ethernet interface

How to wire and configure an SPI Ethernet adapter based on the Microchip ENC28J60 like the Mikroe ETH click board or TZT ethernet adapter.

Mikroe ETH click board


ENC28J60  |  CM3-Panel  
     RST# | NC
     INT# | GPIO40
      CS# | SPI0_CE0 (GPIO36)
      SCK | SPI0_SCLK (GPIO39)
      SDO | SPI0_MISO (GPIO37)
      SDI | SPI0_MOSI (GPIO38)
      3V3 | 3V3
      GND | GND

Save this file in /boot/overlays/enc28j60-cm3panel.dts:

// Overlay for the Microchip ENC28J60 Ethernet Controller
// Acme Systems CM3-Panel 


/ {
    compatible = "brcm,bcm2708";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            /* needed to avoid dtc warning */
            #address-cells = <1>;
            #size-cells = <0>;

            status = "okay";

            eth1: enc28j60@0{
                compatible = "microchip,enc28j60";
                reg = <0>; /* CE0 */
                pinctrl-names = "default";
                pinctrl-0 = <&eth1_pins>;
                interrupt-parent = <&gpio>;
                interrupts = <40 0x2>; /* falling edge */
                spi-max-frequency = <12000000>;
                status = "okay";

    fragment@1 {
        target = <&spidev0>;
        __overlay__ {
            status = "disabled";

    fragment@2 {
        target = <&gpio>;
        __overlay__ {
            eth1_pins: eth1_pins {
                brcm,pins = <40>;
                brcm,function = <0>; /* in */
                brcm,pull = <0>; /* none */

    __overrides__ {
        int_pin = <&eth1>, "interrupts:0",
                  <&eth1_pins>, "brcm,pins:0";
        speed   = <&eth1>, "spi-max-frequency:0";

Compile it by typing:

sudo dtc -@ -I dts -O dtb -o /boot/overlays/enc28j60-cm3panel.dtbo /boot/overlays/enc28j60-cm3panel.dts 

Add this line in /boot/config.txt and reboot:


Disadvantages of this solution

The Microchip ENC28J60 doesn't have a MAC address so you have to configure it by software. To avoid this problem the right chip is ENC424J600.

How to add an audio SPI ethernet interface


WM8731 CM3 Panel
1 3V3 W24
2 RF W16 (PA29)
3 RD W14 (PA27)
4 TK W11 (PA24)
5 TF W12 (PA25)
6 TD W13 (PA26)
7 SDA W17 (PA30-SDA0)
8 SCL W18 (PA31-SCL0)
9 RK W15 (PA28)
10 GND W1

Sergio Tanzilli
System designer, software developer and company co-founder
Webpages: and
Github repository: and