DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware.

The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware.

Important Notes

Installation

Booting

The u-boot bootloader shipped on the device does not have USB support. This means that the only mechanisms available to boot the Debian installer are TFTP, eMMC or mSATA. The documentation below uses a TFTP setup.

Connect the WAN Ethernet port on the device to a DHCP managed network, which you can get on your computer with NetworkManager by sharing your Internet connection.

Setup

If you are on stretch or later, install the debian-installer-netboot-armhf virtual package. If you don't want to install it, you can just download it with apt and then unpack it with dpkg-deb. For jessie or earlier, you can add stretch to your sources.list. If you don't want to modify your sources.list, then use a chdist or apt-venv to download it with apt and unpack it with dpkg-deb. You will need these files:

To enter the u-boot prompt, remove the case, plug the UART to USB cable (video) into the 4 pin (black yellow red empty) header to the right of the LEDs and plug the USB end into your computer. Start your favourite serial console tool, like GNU screen, minicom or microcom, or busybox microcom and connect to the USB serial console device. The busybox microcom should already be installed on your computer if you are running Debian.

Once the update is done, you will need to reboot to start the new version of U-Boot and then go back to the start of the TFTP stage above.

Info

Once you are in the Debian Installer you will see a blue screen with a language choice (English or C).

At this point you can use the standard GNU screen keys (Ctrl+a 1/2/3/4, Ctrl+a n, Ctrl+a p etc) to switch between the Debian Installer virtual terminals.

You will want to use the eth2 device for network if you have a cable connected to the WAN port.

Choose language and other parameters and stop at the partitioning step to read the next section.

Storage

Use BTRFS and keep TurrisOS

Is possible to preserve the existing TurrisOS installation and install Debian into a subvolume of the existing btrfs filesystem on the eMMC storage. This means both TurrisOS and Debian will share the same filesystem/partition but use separate btrfs subvolumes. The Debian Installer doesn't yet support btrfs subvolumes but you can use them by switching to expert mode. When you get to the partitioning step, press tab to switch to "Go Back" and press enter. Go down to "Change debconf priority" and press enter, continue and choose "low" then go back to the partitioning step. Choose to use the btrfs volume as / but do *not* format it (a format will delete TurrisOS). After the partitioning, but before the software installation, you will need to unmount the install directory, mount the root subvolume, create a new Debian subvolume and then mount the new Debian subvolume. You can substitute @debian for any subvolume name other than @ and @factory, which are TurrisOS subvolumes.

Alternative install methods

For an alternative installation using a self compiled Linux kernel (instead of a Debian Linux kernel as above) see the omnia-debian wiki. If you follow this one, you're not keen on cross-compiling and accept to trust images downloaded unencrypted from the internet, you can find an ready-made image on http://aule.elfove.cz/%7Ebrill/omnia-debian/.

Linux version

For now the device needs a custom non-Debian Linux kernel version as well as some additional scripts to get all the features. The custom kernel is based on some Linux 4.x branch and is maintained on Github. (Update: it is unclear if that repository is the official one. The official repository is the OpenWRT fork and has a different set of patches.)

Watchdog

The bootloader enables the watchdog of the SoC. To handle this you either have to disable it again in the bootloader (see above) or pet it regularly. For the latter just add

[Manager]
RuntimeWatchdogSec=10s

to /etc/systemd/system.conf.

Ethernet

U-Boot doesn't provide the mac addresses to be used in the device tree. To make the Debian system use the right ones I did:

and the same for eth1 (platform-f1030000.ethernet) and eth2 (platform-f1034000.ethernet).

The mac address reserved for your machine is saved in the crypto chip. To find out the base check U-Boot's ethaddr variable. You "own" this and the two following addresses.

Network Switch

The switch port needs the module "mv88e6xxx" loaded at boot; it may not load manually. Placing in /etc/modules works for me.

The "bridge-utils" package can be used to configure the switch /etc/network/interfaces.d/br0:

auto br0
iface br0 inet static
address x.x.x.x
netmask y.y.y.y
gateway z.z.z.z
up ip link set eth0 up
up ip link set eth1 up
up ip link set lan0 up
up ip link set lan1 up
up ip link set lan2 up
up ip link set lan3 up
up ip link set lan4 up
bridge_ports lan0 lan1 lan2 lan3 lan4

Power Management

The device will not power off on shutdown, LEDs remain on and the CPU heatsink remains hot.

Suspend/etc are untested.

RTC

The in-SoC RTC isn't working properly. It is somewhat working after doing

mw 0xf10184a0 0xfd4d4cfa

in U-Boot. If you don't do this, the driver only reads 2016-12-19 22:00:34 from it.

WiFi

The Debian kernel fails to probe the wifi drivers. There is already a bug report about this. As a work around add

pcie_aspm=off

on the Linux kernel command line, then the wifi drivers probe correctly.

The ath90k driver requires the non-free firmware-atheros package to be installed, otherwise the second WiFi device will not work.