I2SE Duckbill

Tiny USB pen drive like device which can be used as controller for Home Automation and/or as developer board. Vendor offers versions with several RF add-ons, e.g. WM-Bus or Z-Wave.

FIXME Please add the installation procedure here.

Outdated Information!
This article contains information that is outdated or no longer valid. You can edit this page to update it.

At time of writing not all patches are merged into OpenWrt's mainline yet. So the following scripts still use some external references.

First, compile U-Boot and OpenWrt. You can use the following script:

# This script downloads OpenWrt MXS target and U-Boot and compiles for
# I2SE' Duckbill device.

# clone repository and checkout mxs branch
git clone git@github.com:mhei/openwrt.git openwrt.git
( cd openwrt.git; git checkout -b mxs origin/mxs )

# create a default config for I2SE's Duckbill device
cat <<EOF > openwrt.git/.config

make -C openwrt.git defconfig

# compile all
make -C openwrt.git -j8

# clone u-boot repository and checkout duckbill branch
git clone git@github.com:mhei/u-boot.git u-boot.git
( cd u-boot.git; git checkout -b duckbill origin/duckbill )

# tweak environment for u-boot cross-compiling by using OpenWrt's toolchain
export CROSS_COMPILE="arm-openwrt-linux-"
export PATH="$TS_PATH:$PATH"

make -C u-boot.git duckbill_config
make -C u-boot.git -j8 u-boot.sb

u-boot.git/tools/mxsboot sd u-boot.git/u-boot.sb u-boot.git/bootpart

After this, you could use the following script for preparing a SD card with the OpenWrt's default SD card layout.

# This script installs OpenWrt on a SD card for a I2SE Duckbill device.
# Attention: this script destroys all data on the device!
# Use at your own risk.

# Attention: the following deletes all partitions from the SD card
# and re-partition the SD card into 3 primary partitions:
# Partition 1: boot partition for U-Boot
# Partition 2: OpenWrt system 1
# Partition 3: OpenWrt system 2
fdisk "$SDCARD" <<EOF

# write boot partition
dd if=u-boot.git/bootpart of=${SDCARD}1 conv=fsync

# write image 1
dd if=openwrt.git/bin/mxs/openwrt-mxs-root.ext4 of=${SDCARD}2 conv=fsync

# write image 2
dd if=openwrt.git/bin/mxs/openwrt-mxs-root.ext4 of=${SDCARD}3 conv=fsync
  1. Partition 1: boot partition for U-Boot
  2. Partition 2: OpenWrt system 1
  3. Partition 3: OpenWrt system 2

Not yet supported. However, the SD card layout is prepared for “safe-upgrade”. That means that you can write the update to a second partition, leaving the currently running system alone, and then switch over to the new system by setting a flag in the bootloader. See next chapter for details.

Terminal Upgrade Process

  • Login as root via SSH on
  • Determine whether you run system 1 or 2 at the moment: if “cat /proc/cmdline” contains “root=/dev/mmcblk0p2” then you are running system 1 and have to write the new firmware into system 2 (/dev/mmcblk0p3). Use /dev/mmcblk0p2 when you are running the system 1 at the moment.
  • Use the following commands to write the partiton image:
cd /tmp/
wget http://downloads.openwrt.org/snapshots/trunk/mxs/openwrt-mxs-root.ext4
dd if=openwrt-mxs-root.ext4 of=/dev/mmcblk0p3 conv=fsync
  • Now tell U-Boot to use the other system (adopt according to your current system) and reboot:
fw_setenv bootsys 2
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2024/02/12 08:58
  • by