# NetModule OEM Linux The purpose of this repository is to provide a base or a template for customers to build their own distribution based on the NetModule OEM Linux distribution. The submodules and source revisions are frozen to match the latest release. ## Initial steps Before building anything, it is required to get all the submodules. This is done with the following commands: ``` git submodule init git submodule update ``` ### Copy PFE firmware Please make sure that you copy the PFE firmware with the right version meta-netmodule-bsp/recipes-kernel/pfe/pfe_ to meta-netmodule-bsp/recipes-kernel/pfe/pfe/. You need to copy the class and util firmware files. This is necessary because the firmware is currently only available under NDA. ## Selecting hardware target The hardware target can be selected by sourcing the machine_select script: ``` source machine_select 9 # Selecting ProCV2.2 ``` ## Building an image This distribution provides three images: 1. The minimal image 2. The "release" image 3. The development image ### The minimal image It is a initramfs image which can be loaded from the bootloader. It gives access to basic linux functionalities and allows to flash other images. It can be built with the following commands: ``` source env.image-minimal bitbake virtual/netmodule-image ``` ### The "release" image This is the default image providing all functionalities of the system. It can be build with the following commands: ``` source env.image-ostree bitbake netmodule-linux-image ``` ### The development image This is the default image extended with development and debugging tools. It can be build with the following commands: ``` source env.image-ostree bitbake netmodule-linux-image-dev ``` ## Usage ### 1000BaseT1 The PFE driver comes up automatically. However, it does by default rely on autoneg. This doesn't seem to work with the Göpel Media Converter EasyCON. Therefore, a reset is required. Currently pfe0 shares the reset signal with eth0. That's why the following works: ``` brginup.sh enable-pfe ifconfig eth0 down ifconfig eth0 up ``` Now the 1000BaseT1 PHY works in default mode. ### Modem The modem is disabled by default. However, it is possible to enable it with the following command: ``` bringup.sh enable-modem ``` To use adb you have to do the following: ``` echo 0x2c7c >> ~/.android/adb_usb.ini adb shell ``` ### Wifi Enable the Wifi module (make sure you enable the modem first): ``` bringup.sh enable-wifi ``` ### ADCs Read out the SPI ADCs: ``` bringup.sh read-adc ``` ### IMU To enable the IMU you can call enable-imu.sh: ``` bringup.sh enable-imu.sh ``` To communicate with the imu you can use test-imu.sh: ``` # Read/Write bringup.sh read-write-imu /dev/spidev1.0 1 2020 # Read bringup.sh read-write-imu /dev/spidev1.0 1 ``` ### Secure Element To enable the secure elelment call enable-secure-element: ``` bringup.sh enable-secure-element ``` There is no helper for the secure element available yet. You can use spidev_test to communicate with it: ``` spidev_test --help ``` ### V2X Enable the V2X and load a firmware (make sure you enable the modem first): ``` bringup.sh enable-v2x ``` ### GPIOS Set gpio: ``` bringup.sh set-gpio ``` Get gpio: ``` bringup.sh get-gpio ```