CM-T43: Yocto Linux: User Space

From Compulab Mediawiki
Jump to: navigation, search


The example run-time Yocto Linux filesystem image for the CompuLab CM-T43 System-on-Module / Computer-on-Module is based on Texas Instruments Arago project.

The Automatic Installation page provides a brief introduction on how to install the run-time Yocto Linux image.

Using Yocto Linux on CM-T43

Connection and Logging In

Use the following username to login:

root@cm-t43: root

To login into the Linux system, you may use a serial console (ttyO0) at 115200 bps, or connect through the network.


CM-T43 can operate in two modes: dual MAC mode, or as a 3 port ethernet switch. The default mode of operation is dual MAC mode. A user guide for both operation modes can be found in the Linux Core CPSW User's Guide article in the TI wiki. To configure networking, edit /etc/network/interfaces, /etc/resolv.conf, /etc/hostname and /etc/hosts. For more information about Linux network configuration read Network setup chapter in the Debian Reference.

Switching to 3-port switch mode

To enable 3-port switch mode, the device tree blob must be modified to remove the dual_emac property before Linux boots. This can be done using the following U-Boot commands:

# fdt addr <address fdt was loaded to>
# fdt rm /ocp/ethernet@4a100000 dual_emac

Wayland display server

The Arago root filesystem image contains fully featured display server system Wayland/Weston. Wayland is a protocol that specifies the communication between a display server (called Wayland compositor) and its clients, as well as a reference implementation of the protocol. The Wayland project includes a demo Wayland compositor, called Weston. It's fast, small, and runs on embedded and mobile devices. On start-up Wayland and the Texas Instruments Matrix is started. Connect USB mouse and keyboard for interaction with Wayland and the Texas Instruments Matrix.

  • Use the following commands to stop the matrix:
/etc/init.d/matrix-gui-2.0 stop
  • Use the following commands to start the matrix:
/etc/init.d/matrix-gui-2.0 start
  • Use the following commands to stop the Weston:
/etc/init.d/weston stop
  • Use the following commands to start the Weston:
/etc/init.d/weston start

Display options

CM-T43 evaluation platform has three video output interfaces: LCD, DVI, and LVDS. Default configuration of Yocto Linux for CM-T43 uses LCD as primary video output.

USB Dual-Role-Device

CM-T43 has USB DWC3 based controller. It features USB 2.0 Dual-Role-Device (DRD) subsystem with integrated HS/FS (USB2.0) PHY. CM-T43 DRD port is USB host and USB device (gadget) capable. USB Device Gadget drivers are compiled as modules with default CM-T43 kernel configuration. Current Linux kernel support of DWC3 features does not allow dynamic role (host/device) switching during runtime. By default, host role is assigned to CM-T43 DRD port.

Device mode can be enabled by running the following U-Boot commands before boot:

# fdt addr <address fdt was loaded to>
# fdt resize
# fdt set /ocp/omap_dwc3@48380000/usb@48390000 dr_mode peripheral

Testing Device (gadget) mode

Default CM-T43 kernel configuration enables g_serial, g_mass_storage, g_ether, g_audio, and g_hid gadget drivers. More gadget drivers can be enabled in the kernel configuration.

  • Connect USB OTG micro B-cable (ID pin Float) to P3 USB DRD port of SB-SOM baseboard.
  • Connect other side Standard-A connector to Linux Host PC USB Host port.
Emulate a serial link
  • Load gadget driver on CM-T43 Eval board:
root@cm-t43:~# modprobe g_serial
[   56.306729] g_serial gadget: Gadget Serial v2.4
[   56.311433] g_serial gadget: g_serial ready
[   56.758367] g_serial gadget: high-speed config #2: CDC ACM config
  • Ensure the connection is established on the Host PC:
user@linux-host:~$ dmesg
[72415.607738] cdc_acm 2-1.8.2:2.0: ttyACM0: USB ACM device
[72415.608446] usbcore: registered new interface driver cdc_acm
[72415.608447] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
  • Receive data on CM-T43 Eval board:
root@cm-t43:~# cat /dev/ttyGS0
  • Send data from Host PC:
user@linux-host:~$ echo "Test message" > /dev/ttyACM0

Analog Audio

CM-T43 provides an analog audio interface, which is registered as a standard ALSA sound card. Use aplay -l to list all soundcards and digital audio devices registered on the system:

root@cm-t43:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CMT43SoundCard [CM-T43-Sound-Card], device 0: davinci-mcasp.0-wm8731-hifi wm8731-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Analog Audio Settings

To enable the Analog audio playback, alsamixer or amixer applications can be used.

  • alsamixer - set the “Output Mixer” control on.


  • amixer - set the “Output Mixer HiFi Playback Switch” control on using command line interface:
root@cm-t43:/# amixer cset numid=13 1
numid=13,iface=MIXER,name='Output Mixer HiFi Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on

Analog Audio Playback

In order to play back a sound file make use of the aplay application.

  • aplay -L can be used for listing of all pcm devices.

Here is a sample output of aplay -L command:

root@cm-t43:/# aplay -L
    Discard all samples (playback) or generate zero samples (capture)
    PulseAudio Sound Server
    Default Audio Device
    Default Audio Device


CM-T43 features 802.11b/g/n wireless connectivity solution, implemented with a Marvell wireless controller module.

WiFi Initialization

  • The driver gets loaded automatically. Make sure that the WiFi driver is loaded:
root@cm-t43:/# lsmod | grep mwifi
mwifiex_sdio           26039  0
mwifiex               256669  1 mwifiex_sdio
cfg80211              259154  1 mwifiex
  • iwconfig command from wireless-tools package can be used to retrieve detailed information about the WiFi interfaces:
mlan0     IEEE 802.11abgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   
          Retry short limit:9   RTS thr=2347 B   Fragment thr=2346 B   
          Encryption key:off
          Power Management:on
  • WLAN interface activating:
root@cm-t43:/# ifconfig mlan0 up
  • Sample WiFi scanning:
root@cm-t43:/# iwlist mlan0 scan

The output will show the list of Access Points and Ad-Hoc cells in range. For more information about connecting to wireless networks and tuning WiFi interfaces refer to “wpa_supplicant” and “wireless-tools” man pages.


Host Controller Interface (HCI) Initialization

  • HCI requires no user interaction for being configured. The driver gets loaded automatically unless this option has been disabled by putting a black list rule for this device.

Make sure that the Bluetooth driver is loaded:

root@cm-t43:/# lsmod | grep btmrvl
btmrvl_sdio            14518  0
btmrvl                 12690  1 btmrvl_sdio
bluetooth             326343  16 bnep,btmrvl,btmrvl_sdio
  • HCI device configuration utility can be run to retrieve detailed information about the Bluetooth interfaces:
root@cm-t43:/# hciconfig -a
hci0:	Type: BR/EDR  Bus: SDIO
	BD Address: 80:D2:1D:5F:45:18  ACL MTU: 1021:7  SCO MTU: 120:6
	RX bytes:1704 acl:0 sco:0 events:76 errors:0
	TX bytes:1459 acl:0 sco:0 commands:75 errors:0
	Features: 0xff 0xfe 0x8f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link mode: SLAVE ACCEPT 
	Name: 'cm-t43-0'
	Class: 0x000100
	Service Classes: Unspecified
	Device Class: Computer, Uncategorized
	HCI Version:  (0x8)  Revision: 0x8300
	LMP Version:  (0x8)  Subversion: 0x7270
	Manufacturer: Marvell Technology Group Ltd. (72)
  • If the HCI device is not running, use the below command to enable the HCI device:
root@cm-t43:/# hciconfig hci0 up
  • HCI inquire remote devices
root@cm-t43:/# hcitool scan
Scanning ...


Accessing and setting the RTC

To access the RTC time and date run:

root@cm-t43:/# hwclock
Sat Jun 17 13:36:35 2017  0.000000 seconds

To set the date and write it into the RTC do the following:

root@cm-t43:/# date -s "2015-02-11 10:00:00"
Wed Feb 11 10:00:00 UTC 2015
root@cm-t43:/# hwclock -w
root@cm-t43:/# hwclock
Sat Jun 17 13:39:09 2017  0.000000 seconds


Touchscreen calibration runs on first boot. To rerun it, execute the following commands:

rm /etc/udev/rules.d/ws-calibrate.rules
rm /run/media/mmcblk0p1/ws-calibrate.rules

CAN bus

Install can-utils using:

# apt-get install can-utils

CAN interface configuration

  • Load the can bus modules:
root@cm-t43:~# modprobe can-raw
[  123.114470] can: controller area network core (rev 20120528 abi 9)
[  123.120993] NET: Registered protocol family 29
[  123.155278] can: raw protocol (rev 20120528)
root@cm-t43:~# modprobe can-bcm
[  145.749470] can: broadcast manager protocol (rev 20120528 t)

It is recommended configure the CAN interface, with the iproute2 utilities.

  • To make sure the right ip utility is used, run:
root@cm-t43:~# ip -V
ip utility, iproute2-ss160111
  • Configure the CAN interface bit-rate to 125 Kbits/sec (values of up to 1Mbit/sec are supported):
root@cm-t43:~# ip link set can0 type can bitrate 125000
  • Enable the CAN interface:
root@cm-t43:~# ip link set can0 up
[  184.948857] net can0: c_can_hw_raminit_wait_syscon: time out
[  184.954781] c_can_platform 481d0000.can can0: setting BTR=0518 BRPE=0000
Send/Receive packets

Use cansend and candump utilities to send and receive packets via CAN interface.

  • Send standard CAN frame (on the first device):
root@cm-t43:~# cansend can0 111#1122334455667788
  • Send extended CAN frame (on the first device):
root@cm-t43:~# cansend can0 11111111#1122334455667788
  • Dump all received data frames as well as error frames (on the second device):
root@cm-t43:~# candump any,0:0,#FFFFFFFF
  can0  111  [8] 11 22 33 44 55 66 77 88
  can0  11111111  [8] 11 22 33 44 55 66 77 88


To use a GPIO:

  • Select a pin you wish to use as GPIO by consulting the CM-T43 reference manual. The reference manual contains a list of pins and the possible functions each pin can support, many of which include GPIO signals as one of the possible functions.
  • Setup the pinmux so that the GPIO function is selected for the pin you chose in the previous step. This may require you to edit the device tree for CM-T43. Consult the device tree article in the CM-T43 Linux wiki.
  • Export the GPIO in Linux sysfs and cd into it
root@cm-t43:/# echo <gpio_num> > /sys/class/gpio/export
root@cm-t43:/# cd gpio<gpio_num>
  • Select GPIO input/output function:
root@cm-t43:/# echo in > direction


root@cm-t43:/# echo out > direction
  • To read GPIO input (or determine what value is being output):
root@cm-t43:/# cat value
  • To output a value on the GPIO pin:
root@cm-t43:/# echo 1 > value


CM-T43 Yocto Linux has PRU support. For usage instructions, consult the TI PRU wiki.

See also