CM-T335: Linux: Debian Legacy

From Compulab Mediawiki
Jump to: navigation, search


The example run-time Linux filesystem image for the CompuLab CM-T335 System-on-Module / Computer-on-Module is based on Debian GNU/Linux Sid. The CompuLab Linux package for CM-T335 includes ready to run NAND flash image, Linux kernel configuration and source code patches, and an archive of the root filesystem, used to create the image.

The default Debian Sid Linux image includes more than 400 software packages. Among them:

  • Core system
  • Debian package management system
  • X11 Windowing System
  • Enlightenment desktop manager
  • Netsurf web browser
  • Samba connectivity suite
  • SSH and FTP server and client
  • ALSA configuration and usage utilities
  • CAN Bus utilities
  • Bluetooth tools and daemons

The Getting started with Linux on CM-T335 page provides a brief introduction on how to install the run-time Linux image. This article describes package structure and peripheral device options specific to the CM-T335.

Using Debian Linux on CM-T335

Connection and Logging In

Use the following usernames and passwords to login:

Account with administrative privileges:

User: root
Password: 111111

Regular user account:

User: user	
Password: 111111

In addition to these accounts CM-T335 allows anonymous FTP access. To login into the Linux system, you may use a serial console (ttyO0) at 115200 bps, or connect through the network, or use a keyboard and DVI/LCD display (tty1, tty2, tty3, tty4).


To configure networking, edit /etc/network/interfaces, /etc/udev/rules.d/70-persistent-net.rules, /etc/resolv.conf, /etc/hostname and /etc/hosts. For more information about Debian Linux network configuration read Network setup chapter in the Debian Reference.


The Linux file system image is designed to suit different kernel versions and configurations. Therefore, during the operating system startup, consoles at several serial ports and DVI/LCD display are enabled. Some of these devices may not be supported, either because of kernel versions incompatibilities, or because the kernel was not configured to support these devices. When the console is enabled for such a device, the following or similar message can appear on active console:

INIT: Id "T0" respawning too fast: disabled for 5 minutes

This is not an error message, it is just a warning that can be eliminated by editing /etc/inittab file.

X Windows system

The CompuLab distribution contains full featured X Windows system with Enlightenment 17 window manager. Before starting X Windows, connect USB mouse and keyboard to the system. You can run X Windows by typing startx.

Enlightenment 17 window manager has a built in configuration set up to work best with phones, tablets and similar devices. To activate the "touchscreen" profile, enter Main->Settings Panel->Settings->Profiles. Select the Touchscreen profile.

To switch back to the standard profile, please see the Known Issues article.

Software Management

The Debian Linux image for CM-T335 includes all the information required to use Debian package management utilities. You can use apt-get and dpkg out of the box.


Touchscreen calibration

The supported touchscreen devices can be accessed through symbolic link /dev/input/touchscreen. The symlink is created by udev rules defined in /etc/udev/rules.d/10-touchscreen.rules.
Calibration utilities require proper setting of TSLIB_TSDEVICE system variable (pointing to the touchscreen device special file). This is done automatically by the /etc/profile.d/ script.

Touchscreen calibration can be performed with ts_calibrate utility available in package libts-bin. To calibrate the touchscreen:

  • Make sure X Server is not running
  • Run ts_calibrate utility. For proper calibration you are required to touch the touchscreen corners and center in the following order: top-left, top-right, bottom-right, bottom-left, center.

The calibration results are saved to file /etc/pointercal.

  • Use ts_test utility to test the calibration results.


CM-T335 features Bluetooth 4.0 interface. Following sections describe the initialization and simple use cases of Bluetooth device.

Host Controller Interface (HCI) Initialization

  • Attach the ttyO1 serial port to the HCI Bluetooth subsystem:
root@cm-debian:~# hciattach -s 115200 /dev/ttyO1 texas 3000000
Found a Texas Instruments' chip!
Firmware file : /lib/firmware/TIInit_7.6.15.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Bluetooth: HCI UART driver ver 2.2
Bluetooth: HCI H4 protocol initialized
Bluetooth: HCI BCSP protocol initialized
Bluetooth: HCILL protocol initialized
Device setup complete
  • Run HCI device configuration utility to retrieve detailed information about the Bluetooth device:
root@cm-debian:~# hciconfig -a
hci0:   Type: BR/EDR  Bus: UART
        BD Address: C4:ED:BA:3E:86:42  ACL MTU: 1021:4  SCO MTU: 180:4
        RX bytes:928 acl:0 sco:0 events:42 errors:0
        TX bytes:1452 acl:0 sco:0 commands:42 errors:0
        Features: 0xff 0xfe 0x2d 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: SLAVE ACCEPT 
        Name: 'cm-debian-0'
        Class: 0x4a0100
        Service Classes: Networking, Capturing, Telephony
        Device Class: Computer, Uncategorized
        HCI Version: 4.0 (0x6)  Revision: 0x0
        LMP Version: 4.0 (0x6)  Subversion: 0x1f29
        Manufacturer: Texas Instruments Inc. (13)

A2DP Headphones

  • Scan for available devices to find out Headphones BT device address:
root@cm-debian:~# hcitool scan
Scanning ...
	00:07:A4:F2:B3:CB	Motorola HT820
  • Add new PCM device by editing /etc/asound.conf:
pcm.btheadphones {
   type plug
   slave {
       pcm {
           type bluetooth
           device 00:07:A4:F2:B3:CB
           profile "auto"
   hint {
       show on
       description "BT Headphones"
ctl.btheadphones {
  type bluetooth
  • List device names to ensure correct settings in /etc/asound.conf:
root@cm-debian:~# aplay -L
    Discard all samples (playback) or generate zero samples (capture)
    BT Headphones
    Default Audio Device
    Default Audio Device
  • Put the headphones in the pairing mode and launch bluez-simple-agent application and provide device PIN code on request:
root@cm-debian:~# bluez-simple-agent hci0 00:07:A4:F2:B3:CB
RequestPinCode (/org/bluez/1194/hci0/dev_00_07_A4_F2_B3_CB)
Enter PIN Code: 0000
New device (/org/bluez/1194/hci0/dev_00_07_A4_F2_B3_CB)
  • Launch aplay playback tool:
root@cm-debian:~# aplay -D btheadphones <audio-file.wav>

Obex FTP service

The OBject EXchange protocol (OBEX) can be used to exchange all kind of objects like files, pictures, calendar entries (vCal) and business cards (vCard) over bluetooth, IrDA, USB and serial cable links. CM-T335 Linux example root file system contains file transfer utility for devices that use the OBEX protocol. Following examples demonstrate its usage with mobile phone device.

  • Enable bluetooth on the phone. On CM-T335, scan for available devices to find out phone's BT address:
root@cm-debian:~# hcitool scan
Scanning ...
	00:15:2A:20:63:94	Nokia 6230i
  • Ensure the phone supports Obex FTP service:
root@cm-debian:~# sdptool search FTP
Inquiring ...
Searching for FTP on 00:15:2A:20:63:94 ...
Service Name: OBEX File Transfer
Service RecHandle: 0x100de
Service Class ID List:
  "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 10
  "OBEX" (0x0008)
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100
  • Pair the device - provide PIN code upon request and confirm permission request on the phone:
root@cm-debian:~# bluez-simple-agent hci0 00:15:2A:20:63:94
RequestPinCode (/org/bluez/1285/hci0/dev_00_15_2A_20_63_94)
Enter PIN Code: 1937
New device (/org/bluez/1285/hci0/dev_00_15_2A_20_63_94)

Admolition note.png You can launch bluez-simple-agent with no parameters. The agent is tracking requests to all bluetooth devices and triggers pin code confirmation when needed.
  • List phone's root folder:
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94  --list
Browsing 00:15:2A:20:63:94 ...
Tried to connect for 579ms
Receiving "(null)".../<?xml version="1.0"?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"
 [ <!ATTLIST folder mem-type CDATA #IMPLIED> ]>
<folder-listing version="1.0">
    <folder name="EXTENTSION" user-perm="RW" mem-type="MMC"/>
    <folder name="Images" created="19800101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Video clips" created="19800101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Music files" created="19800101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Themes" created="19800101T000000" user-perm="RW" mem-type="DEV"/>
    <folder name="Graphics" created="19800101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Tones" created="19800101T000000" user-perm="R" mem-type="DEV"/>
    <folder name="Recordings" created="19800101T000000" user-perm="R" mem-type="DEV"/>
  • Transfer a file from CM-T335 to the phone:
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94 --put test_file.txt 
Browsing 00:15:2A:20:63:94 ...
Tried to connect for 380ms
Sending "test_file.txt"...|done
  • Retrieve a file from the phone to CM-T335:
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94 --get test_file.txt 
Browsing 00:15:2A:20:63:94 ...
Tried to connect for 267ms
Receiving "test_file.txt".../done

Wireless local area network (WLAN)

The CM-T335 features 802.11b/g/n wireless interface, implemented with the TI WL1271 Wireless module.

WLAN Initialization

  • The WL12xx WLAN driver gets loaded automatically. Make sure that the WLAN driver is loaded:
root@cm-debian:~# lsmod | grep wl12xx_spi
wl12xx_spi              4527  0 
wl12xx                167292  1 wl12xx_spi

If the WLAN driver has not been loaded automatically, it can be loaded manually:

root@cm-debian:~# modprobe wl12xx_spi
cfg80211: Calling CRDA to update world regulatory domain
wl1271: loaded
  • iwconfig command from wireless-tools package can be used to retrieve detailed information about WLAN interfaces:
root@cm-debian:~# iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=0 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
  • WLAN interface activating:
root@cm-debian:~# ifconfig wlan0 up
wl1271: firmware booted (Rev
  • Sample WLAN scanning:
root@cm-debian:~# iwlist wlan0 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 WLAN interfaces refer to “wpa_supplicant” and “wireless-tools” man pages.

WL12xx calibration tool

Calibration of TI WL12xx wireless device is needed for generation of specific radio configuration parameters and saving into the NVS file. The NVS file is then used by the wl12xx driver.

The CM-T335 Linux package contains the statically compiled calibrator utility from ti-utils support package for WL12xx. For more details please read OMAP Wireless Connectivity Calibration Proccess NLCP article.

Example of reading WLAN MAC address stored in NVS file:

root@cm-debian:~# ./calibrator get nvs_mac /lib/firmware/ti-connectivity/wl1271-nvs.bin
MAC addr from NVS: de:ad:be:ef:00:00
Admolition note.png The CM-T335 WLAN MAC address is initialized from the chip fuse, not from NVS file.

Controller–area network (CAN)

The CM-T335 features a TI DCAN Controller Area Network (DCAN), integrated into the Sitara AM335X SoC. The TI DCAN module supports bitrates up to 1 Mbit/s and is compliant to the CAN 2.0B protocol specification.

Loading CAN modules

If the D_CAN driver and/or CAN protocols (Raw and Broadcast Manager) compiled as module(s), they must be loaded prior to enabling CAN interface.

  • Load Raw CAN protocol module:
root@cm-debian:~# modprobe can-raw
can: raw protocol (rev 20090105)
  • Load Broadcast Manager CAN protocol module:
root@cm-debian:~# modprobe can-bcm
can: broadcast manager protocol (rev 20090105 t)
  • Load D_CAN driver module:
root@cm-debian:~# modprobe d_can_platform
CAN bus driver for Bosch D_CAN controller 1.0
d_can d_can.0: device registered (irq=52, irq_obj=53)
d_can d_can.1: device registered (irq=55, irq_obj=56)

For information on enabling CAN kernel support, please, see the Linux Kernel for CM-T335 page.

CAN interface configuration

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

  • To make sure the right ip utility is used, run:
root@cm-debian:~# ip -V
ip utility, iproute2-ss100519
  • Configure the CAN interface bit-rate to 125 Kbits/sec (values of up to 1Mbit/sec are supported):
root@cm-debian:~# ip link set can0 type can bitrate 125000
  • Enable the CAN interface:
root@cm-debian:~# ip link set can0 up
d_can d_can.0: can0: setting CAN BT = 0x518
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-debian:~# cansend can0 111#1122334455667788
  • Send extended CAN frame (on the first device):
root@cm-debian:~# cansend can0 11111111#1122334455667788
  • Dump all received data frames as well as error frames (on the second device):
root@cm-debian:~# 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

GPIO access

Linux provides simple and convenient GPIO access via sysfs interface. A GPIO should be exported using /sys/class/gpio/export. After the GPIO is exported it is possible to change its direction and value using /sys/class/gpio/gpioX/direction and /sys/class/gpio/gpioX/value attributes.


The following example demonstrates how to configure GPIO 64 as output and set value to high:

echo 64 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio64/direction
echo 1 > /sys/class/gpio/gpio64/value
Admolition note.png The above example assumes that the corresponding pin is set to mux mode 7 and the GPIO 64 is not requested in the Linux kernel.

Graphics SDK

The CM-T335 Linux package contains pre-built and ready to run SGX functionality demo programs.

  • The SGX configuration script must be run on CM-T335 before first use:
root@cm-debian:~# /etc/init.d/335x-demo
  • The SGX kernel modules must be loaded prior running the demos:
root@cm-debian:~# /etc/init.d/rc.pvr start

Running Graphics SDK OpenGL ES1.x Demos

  • To run OpenGL ES1.x demos, perform the following:
root@cm-debian:~# cd /opt/gfxsdkdemos/ogles
root@cm-debian:/opt/gfxsdkdemos/ogles# ./OGLESEvilSkull

This will execute the OGLESEvilSkull demo. Press ‘q’ on the CM-T335 console to stop the demo execution.

Running Graphics SDK OpenGL ES2.0 Demos

  • To run OpenGL ES2.x demos, perform the following:
root@cm-debian:~# cd /opt/gfxsdkdemos/ogles2
root@cm-debian:/opt/gfxsdkdemos/ogles2# ./OGLES2FilmTV

This will execute the OGLESFilmTV demo. Press ‘q’ on the CM-T335 console to stop the demo execution.

See also