Using Blocks with Linux

Block utilize serial, I2C, SPI or GPIO interfaces. Their capabilities are defined as JSON, stored in on-board 4K EEPROM.

Reading blocks configuration

To access blocks configuration JSON you have to read it from its EEPROM. First module uses address 0x54, second 0x55 aso. Load drivers first:

echo 24c32 0x54 > /sys/bus/i2c/devices/i2c-0/new_device
echo 24c32 0x55 > /sys/bus/i2c/devices/i2c-0/new_device

Dump the EEPROMs content:

cat /sys/bus/i2c/devices/i2c-0/0-0054/eeprom

or process it with jq:

jq . /sys/bus/i2c/devices/i2c-0/0-0054/eeprom

{
  "class": "KNX",
  "ic": "NCN5130",
  "if": "serial",
  "uart": "38400@8E1",
  "serial": "12345678"
}

Bootloading and resetting blocks

Blocks might support bootloading and reset function depending on their design.

On a NanoPiNeo this funtionallity is accessed by GPIOs. For Slot 1:

Function Slot 1 GPIO Block Pin
serial port ttyS1 33/34
Reset 201 38
Bootload 200 37
echo 200 > /sys/class/gpio/export
echo 201 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio200/direction
echo 1 > /sys/class/gpio/gpio200/value
echo out > /sys/class/gpio/gpio201/direction
echo 0 > /sys/class/gpio/gpio201/value
echo 1 > /sys/class/gpio/gpio201/value

for Slot 2:

Function Slot 2 GPIO Block Pin
serial port ttyS2 33/34
Reset 3 38
Bootload 2 37
echo 2 > /sys/class/gpio/export
echo 3 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio2/direction
echo 1 > /sys/class/gpio/gpio2/value
echo out > /sys/class/gpio/gpio3/direction
echo 0 > /sys/class/gpio/gpio3/value
echo 1 > /sys/class/gpio/gpio3/value

TP-UART Block

This is how to use a TP-UART (KNX) interface on i.e. Slot 2 with NanoPiNeo:

knxd -p /run/knxd/knxd.pid -S --eibaddr=1.1.128 -t 65535 -b tpuarts:/dev/ttyS2:38400

There is no additional GPIO support.