Turris Omnia
Overview
Turris Omnia for RDK-B supports Morty and Dunfell Builds and it is suggested to use Dunfell builds . Turris Omnia for RDK-B have two varieties; RDK-B Gateway and RDK-B Extender.
Specifications
Turris-Omnia Gateway Supported Features
Supported RDKB Features & Enhancements
No | Feature | Supported | Remarks |
---|---|---|---|
1 | LAN Connected Devices-Ethernet | YES | |
2 | WAN Connected Devices-Wi-Fi | YES |
|
3 | Parental Control | NO | |
4 | Firewall settings | YES | |
5 | Advanced Config: Port Triggering | NO | |
6 | Advanced Config: Port Forwarding | NO | |
7 | Advanced Config: Remote Management | YES | Disabling does not work |
8 | Advanced Config: DMZ | NO | |
9 | Xfinity Wi-Fi 2.4/5 GHz – Public Hotspot | NO | |
10 | Test and Diagnostics | YES | Traceroute may lag randomly |
11 | Local WebUI Configuration | YES | |
12 | Factory Reset | NO | |
13 | DHCP /Reserved IP | YES | |
14 | EthWan | YES | |
15 | Eth Agent | NO | |
16 | 2.4 GHz Band Support | YES | |
17 | 5 GHz Band Support | YES | |
18 | Bridge Mode Support | NO | |
19 | Persistent Storage Management | YES | |
20 | WebPA for Comcast,community | YES | |
21 | Lost and Found | NO | |
22 | Bluetooth | NO | |
22 | Harvester Support | NO | |
23 | TR-069 | NO | |
24 | SNMP | NO | |
26 | Yocto-2.2, Morty | YES | |
27 | Yocto-3.1, Dunfell | YES | |
28 | Boot time data measurement | NO | |
29 | Wireless Protection Setup(WPS) | YES | User manual – WPS support in Turris Omnia RDKB Gateway |
30 | Captive Portal | NO | |
31 | Wi-Fi MAC Filtering | NO | |
32 | Log Rotation Support | YES | User manual for Log Rotation support – Log Rotation Support in Turris User manual – Broadband – 2021 M2 |
33 | Firmware Upgrade Support | YES | |
34 | Multiboot Support | NO | |
35 | Telemetry Support | YES | User manual for Telemetry cron job support – Telemetry Cronjob Support for Turris Omnia |
36 | IPV6 | NO | |
37 | Dynamic DNS | NO | |
38 | JST WebUI | YES | |
39 | Tiny RDK | YES | User manual –Tiny RDK gateway image for Turris Omnia |
Supported WiFi HAL APIs
No | LIST OF API’s |
---|---|
1 | wifi_getSSIDNameStatus |
2 | wifi_getApMacAddressControlMode |
3 | wifi_getApAssociatedDeviceStats |
4 | wifi_delApAclDevice |
5 | wifi_getApIsolationEnable |
6 | wifi_setApIsolationEnable |
7 | wifi_pushRadioChannel2 |
8 | wifi_getApAssociatedDeviceDiagnosticResult2 |
9 | wifi_getRadioChannelStats |
10 | wifi_getSSIDTrafficStats2 |
11 | wifi_getNeighboringWiFiStatus |
12 | wifi_getApAssociatedDeviceTxStatsResult (Netlink) |
13 | wifi_getApAssociatedDeviceRxStatsResult (Netlink) |
14 | wifi_getHalVersion |
15 | wifi_getRadioNumberOfEntries |
16 | wifi_getRadioIfName |
17 | wifi_getRadioOperatingFrequencyBand |
18 | wifi_getSSIDNumberOfEntries |
19 | wifi_getApName |
20 | wifi_getSSIDRadioIndex |
21 | wifi_getRadioEnable |
22 | wifi_getRadioAutoChannelEnable |
23 | wifi_getRadioTransmitPower |
24 | wifi_getRadioCountryCode |
25 | wifi_getRadioStandard |
26 | wifi_getSSIDEnable |
27 | wifi_getApBridgeInfo |
28 | wifi_getSSIDNameStatus |
29 | wifi_getBaseBSSID |
30 | wifi_setSSIDEnable |
31 | wifi_setSSIDName |
32 | wifi_setRadioOperatingChannelBandwidth |
33 | wifi_pushSSID |
34 | wifi_getApSecurityKeyPassphrase |
35 | wifi_setApSecurityKeyPassphrase |
36 | wifi_getApNumDevicesAssociated |
37 | wifi_getRadioPossibleChannels |
38 | wifi_getApAclDevices |
39 | wifi_addApAclDevice |
40 | wifi_setApMacAddressControlMode |
41 | wifi_getApSecurityModeEnabled |
42 | wifi_setApSecurityModeEnabled |
Turris-Omnia Extender Supported Features
List of Supported Features in Turris-Omnia Extender
No | Feature | Supported | Remarks |
---|---|---|---|
1 |
wifi extension |
YES | |
2 | secure onboarding | YES | |
3 | 2.4 GHz AP | YES | |
4 | 5GHz AP | YES |
How to build
Upgrading Yocto version from morty to dunfell(Yocto 3.1) for Turris Omnia Reference Platform
Considerations for broadband & extender build:
- OpenEmbedded and Yocto: Dunfell
- Linux kernel 4.14
- Version upgrades for bitbake and other oe recipes(if needed).
Setting up the Host Environment:
Pre-Requisites
Requirement |
Yocto 3.1 LTS (Dunfell) |
---|---|
Linux |
64 bit Ubuntu 18.04 LTS Precise supported distributions and versions are here |
Free HDD Space |
Minimum 100GB Free memory space |
Oracle Virtual Box |
– |
Wireless Adapter |
– |
USB to Ethernet Switch |
|
Host Tools version |
|
Install the following packages for setting up your host VM
The instructions provided below are meant to be executed via the command line on an Ubuntu machine
# essential packages installation # super user mode is required # major essential packages $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm
Configure bash as default command interpreter for shell scripts
sudo dpkg-reconfigure dash
Select “No”
To choose bash, when the prompt asks if you want to use dash as the default system shell – select “No”
Configure Git
Upgrade your Git version to 1.8.x or higher
On Ubuntu 16.04 LTS, if you are unable to upgrade your git version using apt-get, then follow the below steps in order to upgrade
sudo apt-get install software-properties-common sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git
Once git is installed, configure your name and email using the below commands
# review your existing configuration git config --list --show-origin # configure user name and email address git config --global user.name "John Doe" git config --global user.email johndoe@example.com # configure git cookies. Needed for Gerrit to only contact the LDAP backend once. git config --global http.cookieFile /tmp/gitcookie.txt git config --global http.saveCookies true
Configure repo
In order to use Yocto build system, first you need to make sure that repo is properly installed on the machine:
# create a bin directory mkdir ~/bin export PATH=~/bin:$PATH # Download the repo tool and ensure that it is executable curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
Credential configuration
Note: it is also recommended to put credentials in .netrc when interacting with the repo.
A sample .netrc file is illustrated below
machine code.rdkcentral.com login <YOUR_USERNAME> password <YOUR_PASSWORD> |
---|
Image build
Build instructions for creating rdk-generic-broadband-image
The following commands fetches the source code of turris using repo tool and create the image using bitbake
Note: Cloning the code before login once to code.rdkcentral.com, user would get the Authentication error, even though the account is in good standing and has all the required access. Please login to code.rdkcentral.com before attempting to clone.
OpenSync backhaul credential
Please get patch(service.patch) for meta-turris layer from Plume to apply backhaul credential(SSID:PSK). Please check Cloud Access Guide for more details.
#Create workspace directory mkdir <workspace dir> cd <workspace dir> repo init -u https://code.rdkcentral.com/r/manifests -m rdkb-turris-pod-extsrc.xml -b dunfell repo sync -j4 --no-clone-bundle cd meta-turris && git apply service.patch && cd ../ MACHINE=turris-extender source meta-turris/setup-environment build-turris-ext bitbake rdk-generic-extender-image
Note: The kernel Image and root filesystem will be placed under <workspace dir>/build-turris-ext/tmp/deploy/images/turris-extender director
How to flash
Requirements
Two files are required to bring up Newer model of Turris Omnia (Turris Omnia 2019 & Turris Omnia 2020)[Revision: CZ11NIC23
]
- Omnia Medkit image :
- Compressed WIC image(
Example:
rdkb-generic-broadband-image_default_20200809095738.rootfs.wic.*
) coming out of Image build . Extract *.wic.gz or *.wic.bz2 image and rename to sysupgrade.img. For example,
gunzip rdkb-generic-broadband-image_default_*.rootfs.wic.gz (or) bzip2 -d rdkb-generic-broadband-image_default_*.rootfs.wic.bz2 mv rdkb-generic-broadband-image_default_*.rootfs.wic sysupgrade.img
Flashing Steps
Flashing with Medkit & Sysupgrade images
NOTE : This upgrade procedure wipes out eMMC flash storage(/dev/mmcblk0) completely. Earlier partitions are lost.
Perform following steps to flash New Turris Omnia with RDKB image.
- Connect a USB flash drive to PC that is running Linux. Create a partition in flash drive and format the partition with mkfs.ext2
- Copy both attached medkit image and sysupgrade.img image to USB flash drive.
- Disconnect other USB devices from the Turris Omnia and connect the flash drive to either USB port.
-
Hold down the reset button (backside, bottom centre) and plug in the power cord. Wait until the fourth LED lights up (green), then release (before the 5th LED lights up). Please check here to see more detail on rescue modes.
- Wait approximately 2 minutes for the Turris Omnia to flash itself with the temporary image, during which LEDs will change multiple times.
Creating additional partitions
Create partitions for additional rootfs and nvram. Then, reboot the system.
Format newly created two partitions as ext2 partitions.
RDK Firmware(Image) upgrade
Firmware upgrade is done with multiple approaches.
Approach 2(Quick):
This is the quickest and main method of Turris image upgradation.
Copy zImage , dtb file and rootfs files(not *dbg* rootfs file) from PC or VM to /tmp/ directory of Turris Omnia which runs RDK Image.
For example:
scp zImage--4.14.22-r0-turris-20200720105910.bin root@<TurrisOmnia-IP>:/tmp/ scp armada-385-turris-omnia.dtb root@<TurrisOmnia-IP>:/tmp/ scp rdkb-generic-broadband-image_default_20200720105910.rootfs.tar.gz root@<TurrisOmnia-IP>:/tmp/
In Turris Omnia, execute /lib/rdk/TurrisFwUpgrade.sh to flash new RDK image present in /tmp folder
sh /lib/rdk/TurrisFwUpgrade.sh
Turris Omnia will now run upgraded version of Yocto based RDK image.
There are other 2 approaches :
- “approach 1 – RDK firmware upgrade with XConf server” and
- “approach 3 – Fallback to OpenWrt OS ” . Note: If any issues faced with approach 2 ,please refer “Approach 3” – Fallback to OpenWrt OS.
How to bring up
- To bring up serial port using any terminal software ( like Putty, Minicom,Teraterm ) in below configuration of 115200 8N1 and no to hardware and software flow control.
#set the serial device as /dev/ttyUSB0 #lock file location -> /var/lock #Bps/par/Bits -> 115200 8N1 #Hardware Flow control -> No #Software Flow control -> No #enter
- We can use minicom to get the IP of the device post which we can connect ssh from other terminal using : ssh <username-root>@<ip address>
- We can try some commands such as ps -ax and ccsp commands
ad@ad-HP-Compaq-Elite-8300-CMT:~$ sudo minicom [sudo] password for ad: Welcome to minicom 2.7.1 OPTIONS: I18n Compiled on Aug 13 2017, 15:25:34. Port /dev/ttyUSB0, 19:10:00 Press CTRL-A Z for help on special keys 0 Setting bus to 1 BOOT eMMC FS 3970416 bytes read in 218 ms (17.4 MiB/s) 19565 bytes read in 29 ms (658.2 KiB/s) Kernel image @ 0x1000000 [ 0x000000 - 0x3c9570 ] ## Flattened Device Tree blob at 02000000 Booting using the fdt blob at 0x2000000 Loading Device Tree to 0fff8000, end 0ffffc6c ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.15.44-yocto-standard (oe-user@oe-host) (arm-rdk-linux-gnueabi-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2 [ 0.000000] CPU: ARMv7 Processor [414fc091] revision 1 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Turris Omnia [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x000000002fffffff] [ 0.000000] HighMem [mem 0x0000000030000000-0x000000007fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000007fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000007fffffff] [ 0.000000] percpu: Embedded 11 pages/cpu s14156 r8192 d22708 u45056 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 522560 [ 0.000000] Kernel command line: earlyprintk console=ttyS0,115200 root=/dev/mmcblk0p5 rootfstype=ext2 rw rootwait cfg80211.freg=** [ 0.000000] Bootloader command line not present [ 0.000000] Unknown kernel command line parameters "earlyprintk", will be passed to user space. [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 2064556K/2097152K available (9216K kernel code, 650K rwdata, 1796K rodata, 1024K init, 244K bss, 32596K reser) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. root@TurrisOmnia-GW:~# cat /version.txt imagename:rdkb-generic-broadband-image_rdk-next_20221011054255 BRANCH=rdk-next YOCTO_VERSION=dunfell VERSION=4.10.11.22 SPIN=0 BUILD_TIME="2022-10-11 05:42:55" Generated on Tue Oct 11 05:42:55 UTC 2022 root@TurrisOmnia-GW:~# [ 225.228346] EXT2-fs (mmcblk0p5): error: ext2_lookup: deleted inode referenced: 19925 [ 225.232593] wanmanager[9723]:[ 225.239781] EXT2-fs (mmcblk0p5): error: ext2_lookup: deleted inode referenced: 19925 rdk_dyn_log_initg_dl_socket = 3 __progname = wanmanager root@RaspberryPi-Gateway:~# ifconfig erouter0 erouter0 Link encap:Ethernet HWaddr B8:27:EB:8D:99:5F inet addr:192.168.2.153 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fe8d:995f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2489 errors:0 dropped:352 overruns:0 frame:0 TX packets:323 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:222391 (217.1 KiB) TX bytes:40578 (39.6 KiB) root@RaspberryPi-Gateway:~# ps -a | grep eRT 412 non-root 0:00 /usr/bin/CcspCrSsp -subsys eRT. 468 non-root 0:01 /usr/bin/PsmSsp -subsys eRT. 1043 root 0:02 /usr/bin/CcspPandMSsp -subsys eRT. 1720 root 0:00 /usr/bin/CcspTandDSsp -subsys eRT. 1735 non-root 0:00 /usr/bin/CcspEthAgent -subsys eRT. 1745 root 0:00 /usr/bin/notify_comp -subsys eRT. 1752 root 0:01 /usr/bin/CcspWifiSsp -subsys eRT. 2 1769 non-root 0:01 /usr/bin/CcspTr069PaSsp -subsys eRT. 1785 root 0:00 /usr/bin/CcspAdvSecuritySsp -subsys eRT. 1789 root 0:00 /usr/bin/CcspXdnsSsp -subsys eRT. 1806 non-root 0:00 /usr/bin/CcspLMLite -subsys eRT. 1851 root 0:00 /usr/rdk/wanmanager/wanmanager -subsys eRT. 1907 root 0:00 /usr/bin/fwupgrademanager -subsys eRT. 1935 root 0:00 /usr/bin/cellularmanager -subsys eRT. 12125 root 0:00 grep eRT root@RaspberryPi-Gateway:~#
- In browser we can execute the IP address of the box to see WEBUI using <IP address>:<port.no>