Differences between revisions 25 and 27 (spanning 2 versions)
Revision 25 as of 2017-01-24 09:11:48
Size: 5239
Editor: PaulWise
Comment: explicitly list the needed files.
Revision 27 as of 2017-01-24 09:53:26
Size: 6249
Editor: PaulWise
Comment: clarify the intro a bit
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
The following works fine after connecting the WAN port to a dhcp managed network. If you are on unstable, 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 stretch or earlier, you can add unstable to your sources.list. If you don't want to modify your sources.list, then use a [[DebianMan:1/chdist|chdist]] or [[DebianPackage:apt-venv]] to download it with apt and unpack it with dpkg-deb. You will need these files: The u-boot shipped on the device does not have USB support so you will need to connect the WAN port on the device to a DHCP managed network, which you can get on your computer with NetworkManager by sharing your Internet connection.

If you are on unstable, 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 stretch or earlier, you can add unstable to your sources.list. If you don't want to modify your sources.list, then use a [[DebianMan:1/chdist|chdist]] or [[DebianPackage:apt-venv]] to download it with apt and unpack it with dpkg-deb. You will need these files:
Line 19: Line 21:
Then install a tftp server, put the above files in `/srv/tftp` and on the serial console enter the following in To enter the u-boot prompt, plug the UART to USB cable ([[https://www.youtube.com/watch?v=LVhzU5dzZCI|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.

{{{
busybox microcom -s 115200 /dev/ttyUSB0
microcom -s 115200 /dev/ttyUSB0
minicom /dev/ttyUSB0
screen /dev/ttyUSB0 115200
}}}

Then power on or reset the device and hit any key to interrupt autoboot at this point:

{{{
Hit any key to stop autoboot: 3
}}}

Then install a tftp server on your computer, put the above files in `/srv/tftp` and on the serial console enter the following in
Line 101: Line 118:

== See also ==

* [[https://en.opensuse.org/HCL:Turris_Omnia|openSUSE guide for Turris Omnia]]

/!\ This page should be rebased on the template.

Installing Debian On The Turris Omnia Router

The Turris Omnia is an ARM-based (mostly) open hardware router board developed by Project Turris of CZ.NIC. It was kickstarted at Indiegogo and is available in a few shops now.

By default it runs an OpenWRT derivative called TurrisOS, but Debian armhf userland can run on it, too. For now it though needs a custom (read non-Debian) kernel 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.)

Installing vanilla Debian

The u-boot shipped on the device does not have USB support so you will need to connect the WAN port on the device to a DHCP managed network, which you can get on your computer with NetworkManager by sharing your Internet connection.

If you are on unstable, 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 stretch or earlier, you can add unstable 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:

/usr/lib/debian-installer/images/9/armhf/text/debian-installer/armhf/vmlinuz
/usr/lib/debian-installer/images/9/armhf/text/debian-installer/armhf/initrd.gz
/usr/lib/debian-installer/images/9/armhf/text/debian-installer/armhf/dtbs/armada-385-turris-omnia.dtb

To enter the u-boot prompt, 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.

busybox microcom -s 115200 /dev/ttyUSB0
microcom -s 115200 /dev/ttyUSB0
minicom /dev/ttyUSB0
screen /dev/ttyUSB0 115200

Then power on or reset the device and hit any key to interrupt autoboot at this point:

Hit any key to stop autoboot:  3 

Then install a tftp server on your computer, put the above files in /srv/tftp and on the serial console enter the following in U-Boot:

mw 0xf1020300 0x403 #disable watchdog
dhcp
setenv serverip <your_tftp_server_legacy_ip_address>
tftpboot 0x01000000 vmlinuz
tftpboot 0x02000000 armada-385-turris-omnia.dtb
tftpboot 0x03000000 initrd.gz
bootz 0x01000000 0x03000000:$filesize 0x02000000

If this fails for you with

Wrong Ramdisk Image Format
Ramdisk image is corrupt or invalid

your U-Boot needs an update. The U-Boot images that are about to be released by cz.nic are fixed, you can find them at https://api.turris.cz/openwrt-repo/omnia-test/nor_fw/. Update as follows after downloading the image to your tftp directory:

dhcp
tftpboot 0x1000000 uboot-turris-omnia-spl.kwb
sf probe
sf update 0x1000000 0 $filesize

I recommend to use btrfs as rootfs, as U-Boot can handle that and TurrisOS also makes use of it. Before ending the installation put the dtb into the rootfs as /boot/dtb. Then you can boot into your linux using:

setenv mmcboot btrload mmc 0 0x01000000 boot/vmlinuz\; btrload mmc 0 0x02000000 boot/dtb\; btrload mmc 0 0x03000000 boot/initrd.img\; bootz 0x01000000 0x03000000:$filesize 0x02000000
setenv bootargs console=ttyS0,115200 rootfstype=btrfs rootdelay=2 root=/dev/mmcblk0p1 rootflags=commit=5 rw
saveenv

There are some missing parts yet, so the SFP and switch port doesn't work. With the Debian kernel the wifi driver fails to probe, while this works with a monolithic (vanilla) kernel compiled for mvebu + ath10k.

Watchdog handling

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.

MAC address

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:

cat > /etc/systemd/network/00-eth0.link
[Match]
Path=platform-f1070000.ethernet
[Link]
MACAddress=...
EOF

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.

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 kernel command line, then the wifi drivers probe correctly.

Installing with self-build kernel

For an alternative installation using a self compiled kernel (instead of a debian 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/.

See also

* openSUSE guide for Turris Omnia