Difference between revisions of "CM-T3517: Linux: Debian"

From Compulab Mediawiki
Jump to: navigation, search
(Socket CAN utilities)
(WL12xx calibration tool)
 
(4 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
The example run-time Linux filesystem image for CM-T3517 is based on Debian GNU/Linux Sid. The CompuLab Linux package for CM-T3517 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 example run-time Linux filesystem image for CM-T3517 is based on Debian GNU/Linux Sid. The CompuLab Linux package for CM-T3517 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 takes approximately 170 megabytes of flash space, and includes more than 400 software packages. Among them:
+
The default Debian Sid Linux image includes more than 400 software packages. Among them:
  
 
* Core system
 
* Core system
 
* Debian package management system
 
* Debian package management system
 
* X11 Windowing System
 
* X11 Windowing System
* Fluxbox desktop manager
+
* Enlightenment desktop manager
 
* Netsurf web browser
 
* Netsurf web browser
 
* Samba connectivity suite
 
* Samba connectivity suite
 
* SSH and FTP server and client
 
* SSH and FTP server and client
 +
* ALSA configuration and usage utilities
 +
* CAN Bus utilities
 +
* Bluetooth tools and daemons
 +
* The Graphics SDK including the Linux graphics (SGX) drivers and ready to run SGX functionality demos
  
The [[CM-T3517: Linux: Getting started|Getting started with Linux on CM-T3517]] 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-T3517.
+
The [[CM-T3517: Linux: Getting started|Getting started with Linux on CM-T3517]] 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-T3517.
  
== CM-T3517 specific settings ==
+
== Package contents ==
 +
 
 +
=== version.txt ===
 +
The contents of the {{filename|version.txt}} identifies the package version.
 +
 
 +
=== images ===
 +
* {{filename|uImage-cm-t3517}} - ready to run Linux kernel image binary for CM-T3517
 +
* {{filename|debian-image.ubi}} - ready to run Debian Linux UBI image for installation onto the NAND flash
 +
* {{filename|debian-image.tar.bz2}} - archive of the Debian root file system
 +
* {{filename|kernel.img}} - Kernel image required for NAND image installation
 +
* {{filename|ramdisk.img}} - Ramdisk image required for NAND image installation
 +
* {{filename|bootscr.img}} - U-Boot script used for image installation
 +
 
 +
=== kernel ===
 +
* {{filename|uImage-3.7.2-cm-t3517-3.bin}} - ready to run Linux kernel version 3.7.2-cm-t3517-3 for CM-T3517
 +
* {{filename|linux-3.7.2-cm-t3517-3.config}} - Linux kernel 3.7.2-cm-t3517-3 configuration file
 +
* {{filename|linux-3.7.2-cm-t3517-3.patch}} - patch vs. [http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=e6577f3189d82a729b13e38f3d135f1becd6d294 Linux stable kernel 3.7.2] with support for CM-T3517 peripherals
 +
* {{filename|patches}} - ordered collection of patches, that form the single patch above ({{filename|linux-3.7.2-cm-t3517-3.patch}})
 +
 
 +
=== utilities ===
 +
The {{filename|utilities}} directory contains miscellaneous utilities useful for development
 +
* {{filename|tftpd32.zip}} - TFTP server for Windows users
 +
* {{filename|eeprom-util}} - CompuLab EEPROM utility for reading information found inside the EEPROM on CompuLab boards
 +
* {{filename|ti-utils}} -  TI utility required to calibrate the TI WL12xx devices.
 +
* {{filename|bootscr.src}} - U-Boot script source used for loading kernel and ramdisk images from MMC/SD card
 +
* {{filename|debian-image.cfg}} - configuration file used by {{filename|ubinize}} utility for {{filename|debian-image.ubi}} generation. For more information about UBIFS images please refer to the [[Linux_Development_for_ARM_modules#UBIFS_images|Linux Development for ARM modules]] article.
 +
 
 +
=== extra ===
 +
The {{filename|extra}} directory contains files that are not directly connected to the Linux kernel
 +
 
 +
{{filename|Graphics_SDK_04.08.00.01}} - directory contains graphics (SGX) related files:
 +
* {{filename|graphics_sdk_04.08.00.01-cm-t3517-3.patch}} - patch to fix the Graphics SDK v04.08.00.01 compile time errors
 +
* {{filename|patches}} - ordered collection of patches, that form the single patch above ({{filename|graphics_sdk_04.08.00.01-cm-t3517-3.patch}})
 +
 
 +
== Using Debian Linux on CM-T3517 ==
  
 
=== Connection and Logging In ===
 
=== Connection and Logging In ===
Line 32: Line 71:
  
 
In addition to these accounts CM-T3517 allows anonymous FTP access.
 
In addition to these accounts CM-T3517 allows anonymous FTP access.
To login into the Linux system, you may use a serial console (ttyS2) at 115200 bps, or connect through the network, or use a keyboard and DVI/LCD display (tty1, tty2, tty3).
+
To login into the Linux system, you may use a serial console (ttyO2) at 115200 bps, or connect through the network, or use a keyboard and DVI/LCD display (tty1, tty2, tty3).
  
 
=== Networking ===
 
=== Networking ===
Line 45: Line 84:
  
 
=== X Windows system ===
 
=== X Windows system ===
CompuLab distribution contains full featured X Windows system with Fluxbox window manager.
+
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.
 
Before starting X Windows, connect USB mouse and keyboard to the system.
 
You can run X Windows by typing '''''startx'''''.
 
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 [[CM-T3517: Linux: Known Issues|Known Issues]] article.
 +
 +
=== Software Management ===
 +
 +
Debian Linux image for CM-T3517 includes all the information required to use Debian package management utilities. You can use [http://linux.die.net/man/8/apt-get apt-get] and [http://www.wlug.org.nz/dpkg(8) dpkg] out of the box.
  
 
=== Audio ===
 
=== Audio ===
 
CM-T3517 uses the TLV320AIC23B (TI) audio codec.
 
CM-T3517 uses the TLV320AIC23B (TI) audio codec.
The audio drivers are modularized if you use default CM-T3517 configuration. To automatically load the audio driver on Linux boot, "{{filename|snd-soc-cm-t3517}}" has to be added to the {{filename|/etc/modules}}. If the audio driver is not loaded, the following command will load the audio driver and enable audio support:
+
If the default CM-T3517 configuration is used, the audio drivers are modularized and are loaded automatically in the boot process.
<pre>
+
 
modprobe snd-soc-cm-t3517
+
Codec driver {{filename|snd_soc_tlv320aic23}} must be loaded before audio driver {{filename|snd-soc-cm-t3517}}.
</pre>
+
A workaround could be adding {{cmd|snd-soc-cm-t3517}} entry into {{filename|/etc/modprobe.d/alsa-base-blacklist.conf}} and {{filename|/etc/modules}}.
 +
 
 
More information about Linux audio subsystem can be found at [http://www.alsa-project.org ALSA project official website].
 
More information about Linux audio subsystem can be found at [http://www.alsa-project.org ALSA project official website].
  
 
=== Touchscreen ===
 
=== Touchscreen ===
CM-T3517 uses the TSC2046 (TI) touchscreen controller.
+
CM-T3517 Evaluation Kit can be equipped with either of the following LCD touch panels: Toppoly TDO35S or DataImage SCF0403852GGU04.
 +
See [[CM-T3517: Linux: Getting started#Select LCD model|Select LCD model]] and [[CM-T3517: Linux: Kernel#LCD and Touchscreen support|LCD and Touchscreen support]] sections for kernel configuration details to enable support for the particular touchscreen.
 
The touchscreen driver is modularized if you use default CM-T3517 configuration and is loaded by {{filename|udev}} automatically on Linux boot. If the touchscreen driver is not loaded, the following command will load the touchscreen driver:
 
The touchscreen driver is modularized if you use default CM-T3517 configuration and is loaded by {{filename|udev}} automatically on Linux boot. If the touchscreen driver is not loaded, the following command will load the touchscreen driver:
 +
 +
* For Toppoly TDO35S LCD touch panel:
 
<pre>
 
<pre>
 
modprobe ads7846
 
modprobe ads7846
 +
</pre>
 +
* For DataImage SCF0403852GGU04 LCD touch panel:
 +
<pre>
 +
modprobe hx8520-c
 
</pre>
 
</pre>
  
 
The X Windows system of CM-T3517 uses tslib X server input driver to get the input from the touchscreen.
 
The X Windows system of CM-T3517 uses tslib X server input driver to get the input from the touchscreen.
  
=== Touchscreen calibration ===
+
==== Touchscreen calibration ====
Touchscreen calibration can be performed with '''''ts_calibrate''''' utility available in package ''libts-bin''. To calibrate the touchscreen:
+
Both supported touchscreen devices can be accessed through symbolic link {{filename|/dev/input/touchscreen}}.
 +
The symlink is created by {{filename|udev}} rules defined in {{filename|/etc/udev/rules.d/10-touchscreen.rules}}.<br>
 +
Calibration utilities require proper setting of {{parameter|TSLIB_TSDEVICE}} system variable (pointing to the touchscreen device special file).
 +
This is done automatically by the {{filename|/etc/profile.d/tslib.sh}} script.
 +
 
 +
Touchscreen calibration can be performed with {{cmd|ts_calibrate}} utility available in package {{filename|libts-bin}}.
 +
To calibrate the touchscreen:
 
* Make sure X Server is not running
 
* Make sure X Server is not running
 
* Make sure the touchscreen driver is loaded as described in [[CM-T3517: Linux: Debian#Touchscreen|Touchscreen]] section
 
* Make sure the touchscreen driver is loaded as described in [[CM-T3517: Linux: Debian#Touchscreen|Touchscreen]] section
* Set the '''TSLIB_TSDEVICE''' system variable:
+
* Run {{cmd|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 {{filename|/etc/pointercal}}.
<pre>
+
* Use {{cmd|ts_test}} utility to test the calibration results.
export TSLIB_TSDEVICE=/dev/input/by-path/platform-omap2_mcspi.1-event
 
</pre>
 
* 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''.<br>
 
* Use '''''ts_test''''' utility to test the calibration results.
 
  
 
=== MMC/SD ===
 
=== MMC/SD ===
Line 85: Line 142:
 
</pre>
 
</pre>
  
== Device support details ==
+
 
=== Basic platform support ===
+
 
The CM-T3517 basic platform support is implemented in the {{filename|arch/arm/mach-omap2/board-cm-t3517.c}} file of Linux kernel source tree. This file includes default setup of multi-functional pins, registration of the devices integrated in the CM-T3517 module and definitions of platform-specific configuration for these devices.
+
=== 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-T3517 Linux package contains the statically compiled {{cmd|calibrator}} utility from [http://linuxwireless.org/en/users/Drivers/wl12xx/calibrator ti-utils] support package for WL12xx.
 +
For more details please read [http://processors.wiki.ti.com/index.php/WL12xx_NLCP_Calibration_Proccess OMAP Wireless Connectivity Calibration Proccess NLCP] article.
 +
 
 +
Example of reading WLAN MAC address stored in NVS file:
 +
 
 +
<pre>
 +
root@cm-debian:~# ./calibrator get nvs_mac /lib/firmware/ti-connectivity/wl1271-nvs.bin
 +
MAC addr from NVS: 00:00:00:00:00:00
 +
</pre>
 +
{{Note|If the NVS file contains MAC of all zeroes, the MAC address is initialized from the chip fuse. It is recommended to not change it.}}
  
 
=== Controller–area network (CAN) ===
 
=== Controller–area network (CAN) ===
Line 93: Line 164:
  
 
===== Loading CAN modules =====
 
===== Loading CAN modules =====
If TI HECC driver and/or Raw CAN protocol compiled as module(s), they must be loaded prior to enabling CAN interface.
+
If the TI HECC driver and/or Raw CAN protocol compiled as module(s), they must be loaded prior to enabling CAN interface.
  
Load Raw CAN protocol module:
+
* Load Raw CAN protocol module:
 
<pre>
 
<pre>
 
root@cm-debian:~# modprobe can-raw
 
root@cm-debian:~# modprobe can-raw
Line 103: Line 174:
 
root@cm-debian:~#
 
root@cm-debian:~#
 
</pre>
 
</pre>
Load TI HECC driver module:
+
* Load TI HECC driver module:
 
<pre>
 
<pre>
 
root@cm-debian:~# modprobe ti_hecc
 
root@cm-debian:~# modprobe ti_hecc
Line 112: Line 183:
 
</pre>
 
</pre>
  
For information on enabling CAN kernel support, please, see [[CM-T3517: Linux: Kernel#Controller-area network (CAN) support|Controller-area network (CAN) support]] page.
+
For information on enabling CAN kernel support, please, see the [[CM-T3517: Linux: Kernel#Controller.E2.80.93area_network_.28CAN.29_support|Linux Kernel for CM-T3517]] page.
  
 
===== CAN interface configuration =====
 
===== CAN interface configuration =====
It is recommended configure the CAN interface, with the {{filename|iproute2}} utilities. To make sure the right {{filename|ip}} utility is used, run:
+
It is recommended configure the CAN interface, with the {{filename|iproute2}} utilities.
 +
 
 +
* To make sure the right {{filename|ip}} utility is used, run:
 
<pre>
 
<pre>
 
root@cm-debian:~# ip -V
 
root@cm-debian:~# ip -V
Line 122: Line 195:
 
</pre>
 
</pre>
  
Configure CAN interface bit-rate to 125 Kbits/sec (values of up to 1Mbit/sec are supported):
+
* Configure the CAN interface bit-rate to 125 Kbits/sec (values of up to 1Mbit/sec are supported):
 
<pre>
 
<pre>
 
root@cm-debian:~# ip link set can0 type can bitrate 125000
 
root@cm-debian:~# ip link set can0 type can bitrate 125000
Line 128: Line 201:
 
</pre>
 
</pre>
  
Enable CAN interface:
+
* Enable the CAN interface:
 
<pre>
 
<pre>
 
root@cm-debian:~# ip link set can0 up
 
root@cm-debian:~# ip link set can0 up
Line 135: Line 208:
 
</pre>
 
</pre>
  
===== Socket CAN utilities =====
+
===== Send/Receive packets =====
The [http://developer.berlios.de/projects/socketcan/ BerliOS Socket CAN] package is an implementation of CAN protocols for Linux. It uses the Berkeley socket API, the Linux network stack and implements the CAN device drivers as network interfaces. In addition, the package provides user space utilities and test programs suggested as a reference for CAN interface evaluation and testing. The {{filename|socketCAN}} package is available for downloading using SVN or HTTP protocols from the [http://developer.berlios.de/svn/?group_id=6475 BerliOS Socket CAN SVN repository] website.
+
 
Download the package and compile {{filename|can-utils}} directory using an appropriate cross-compiler. For information on cross tool-chain, please read [[CM-T3517: Linux: Kernel#Cross-Compiler|Cross-Compiler]] chapter. After the build process is complete, copy the application binaries to the CM-T3517 file system (e.g. {{filename|/usr/local/can-utils/}}).
 
 
Use {{filename|cansend}} and {{filename|candump}} utilities to send and receive packets via CAN interface.
 
Use {{filename|cansend}} and {{filename|candump}} utilities to send and receive packets via CAN interface.
  
Send standard CAN frame (on the first device):
+
* Send standard CAN frame (on the first device):
 
<pre>
 
<pre>
root@cm-debian:/# cd /usr/local/can-utils/
+
root@cm-debian:/usr/local/can-utils# cansend can0 111#1122334455667788
root@cm-debian:/usr/local/can-utils# ./cansend can0 111#1122334455667788
 
 
root@cm-debian:/usr/local/can-utils#  
 
root@cm-debian:/usr/local/can-utils#  
 
</pre>
 
</pre>
Send extended CAN frame (on the first device):
+
 
 +
* Send extended CAN frame (on the first device):
 
<pre>
 
<pre>
root@cm-debian:/usr/local/can-utils# ./cansend can0 11111111#1122334455667788
+
root@cm-debian:/usr/local/can-utils# cansend can0 11111111#1122334455667788
 
root@cm-debian:/usr/local/can-utils#  
 
root@cm-debian:/usr/local/can-utils#  
 
</pre>
 
</pre>
Dump all received data frames as well as error frames (on the second device):
+
 
 +
* Dump all received data frames as well as error frames (on the second device):
 
<pre>
 
<pre>
root@cm-debian:/usr/local/can-utils# ./candump any,0:0,#FFFFFFFF
+
root@cm-debian:/usr/local/can-utils# candump any,0:0,#FFFFFFFF
 
   can0  111  [8] 11 22 33 44 55 66 77 88
 
   can0  111  [8] 11 22 33 44 55 66 77 88
 
   can0  11111111  [8] 11 22 33 44 55 66 77 88
 
   can0  11111111  [8] 11 22 33 44 55 66 77 88
 
</pre>
 
</pre>
  
== Software Management ==
+
=== USB On-The-Go (OTG) ===
  
Debian Linux image for CM-T3517 includes all the information required to use Debian package management utilities. You can use [http://linux.die.net/man/8/apt-get apt-get] and [http://www.wlug.org.nz/dpkg(8) dpkg] out of the box.
+
CM-T3517 features a Mentor Graphic's USB OTG2.0 high-speed USB On-The-Go (OTG) controller. CM-T3517 OTG port is USB host and USB device (gadget) capable.
 +
 
 +
Host and Gadget drivers are compiled as modules with default CM-T3517 kernel configuration. Both should be loaded for OTG support.
 +
 
 +
* Load Host driver:
 +
<pre>
 +
root@cm-debian:~# modprobe am35x
 +
musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
 +
<6>Waiting for PHY clock good...
 +
musb-hdrc musb-hdrc: >USB OTG mode controller at d0eca000 using PIO, IRQ 71
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Load Gadget driver:
 +
<pre>
 +
root@cm-debian:~# modprobe g_serial
 +
gadget: >Gadget Serial v2.4
 +
gadget: >g_serial ready
 +
musb-hdrc musb-hdrc: >MUSB HDRC host driver
 +
musb-hdrc musb-hdrc: >new USB bus registered, assigned bus number 2
 +
usb usb2: >New USB device found, idVendor=1d6b, idProduct=0002
 +
usb usb2: >New USB device strings: Mfr=3, Product=2, SerialNumber=1
 +
usb usb2: >Product: MUSB HDRC host driver
 +
usb usb2: >Manufacturer: Linux 3.5.7-cm-t3517+ musb-hcd
 +
usb usb2: >SerialNumber: musb-hdrc
 +
hub 2-0:1.0: >USB hub found
 +
hub 2-0:1.0: >1 port detected
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
Default CM-T3517 kernel configuration enables {{filename|g_serial}}, {{filename|g_mass_storage}}, {{filename|g_ether}} and {{filename|g_zero}} gadget drivers.
 +
More gadget drivers can be enabled in the kernel configuration.
 +
 
 +
==== Testing OTG port ====
 +
 
 +
* Host mode. Connect USB keyboard to OTG port.
 +
<pre>
 +
usb 2-1: >new low-speed USB device number 3 using musb-hdrc
 +
usb 2-1: >device v413c p2107 is not supported
 +
usb 2-1: >New USB device found, idVendor=413c, idProduct=2107
 +
usb 2-1: >New USB device strings: Mfr=1, Product=2, SerialNumber=0
 +
usb 2-1: >Product: Dell USB Entry Keyboard
 +
usb 2-1: >Manufacturer: Dell
 +
input: Dell Dell USB Entry Keyboard as /devices/platform/musb-am35x/musb-hdrc/usb2/2-1/2-1:1.0/input/input4
 +
hid-generic 0003:413C:2107.0004: >input: USB HID v1.10 Keyboard [Dell Dell USB Entry Keyboard] on usb-musb-hdrc-1/input0
 +
</pre>
 +
 
 +
* Gadget mode. Connect desktop PC to OTG port.
 +
<pre>
 +
gadget: >high-speed config #2: CDC ACM config
 +
</pre>
 +
 
 +
=== Bluetooth ===
 +
 
 +
CM-T3517 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:
 +
<pre>
 +
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
 +
Bluetooth: RFCOMM TTY layer initialized
 +
Bluetooth: RFCOMM socket layer initialized
 +
Bluetooth: RFCOMM ver 1.11
 +
Device setup complete
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Run HCI device configuration utility to retrieve detailed information about the Bluetooth device:
 +
<pre>
 +
root@cm-debian:~# hciconfig -a   
 +
hci0: Type: BR/EDR  Bus: UART
 +
BD Address: 1C:45:93:3E:5D:86  ACL MTU: 1021:4  SCO MTU: 180:4
 +
UP RUNNING PSCAN
 +
RX bytes:6085 acl:38 sco:0 events:279 errors:0
 +
TX bytes:118688 acl:164 sco:0 commands:78 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: 0x080100
 +
Service Classes: Capturing
 +
Device Class: Computer, Uncategorized
 +
HCI Version: 4.0 (0x6)  Revision: 0x0
 +
LMP Version: 4.0 (0x6)  Subversion: 0x1f29
 +
Manufacturer: Texas Instruments Inc. (13)
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
==== A2DP Headphones ====
 +
 
 +
* Scan for available devices to find out Headphones BT device address:
 +
<pre>
 +
root@cm-debian:~# hcitool scan
 +
Scanning ...
 +
00:07:A4:F2:B3:CB Motorola HT820
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Add new PCM device by editing {{filename|/etc/asound.conf}}:
 +
 
 +
<pre>
 +
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
 +
}
 +
</pre>
 +
 
 +
* List device names to ensure correct settings in {{filename|/etc/asound.conf}}:
 +
<pre>
 +
root@cm-debian:~# aplay -L
 +
null
 +
    Discard all samples (playback) or generate zero samples (capture)
 +
btheadphones
 +
    BT Headphones
 +
default:CARD=cmt3517
 +
    cm-t3517,
 +
    Default Audio Device
 +
sysdefault:CARD=cmt3517
 +
    cm-t3517,
 +
    Default Audio Device
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Put the headphones in the pairing mode and launch {{filename|bluez-simple-agent}} application and provide device PIN code on request:
 +
<pre>
 +
root@cm-debian:~# bluez-simple-agent hci0 00:07:A4:F2:B3:CB
 +
RequestPinCode (/org/bluez/1335/hci0/dev_00_07_A4_F2_B3_CB)
 +
Enter PIN Code: 0000
 +
Release
 +
New device (/org/bluez/1335/hci0/dev_00_07_A4_F2_B3_CB)
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Launch {{filename|aplay}} playback tool:
 +
<pre>
 +
root@cm-debian:~# aplay -D btheadphones sample_audio.wav
 +
Playing WAVE 'sample_audio.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
 +
</pre>
 +
 
 +
==== 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-T3517 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-T3517, scan for available devices to find out phone's BT address:
 +
<pre>
 +
root@cm-debian:~# hcitool scan
 +
Scanning ...
 +
00:15:2A:20:63:94 Nokia 6230i
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Ensure the phone supports Obex FTP service:
 +
<pre>
 +
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
 +
 
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Pair the device - provide PIN code upon request and confirm permission request on the phone:
 +
<pre>
 +
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
 +
Release
 +
New device (/org/bluez/1285/hci0/dev_00_15_2A_20_63_94)
 +
 
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
{{Note|You can launch {{cmd|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:
 +
<pre>
 +
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94  --list
 +
Browsing 00:15:2A:20:63:94 ...
 +
Connecting..\done
 +
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"/>
 +
</folder-listing>
 +
done
 +
Disconnecting..-done
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Transfer a file from CM-T3517 to the phone:
 +
<pre>
 +
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94 --put test_file.txt
 +
Browsing 00:15:2A:20:63:94 ...
 +
Connecting..\done
 +
Tried to connect for 380ms
 +
Sending "test_file.txt"...|done
 +
Disconnecting../done
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
* Retrieve a file from the phone to CM-T3517:
 +
<pre>
 +
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94 --get test_file.txt
 +
Browsing 00:15:2A:20:63:94 ...
 +
Connecting..\done
 +
Tried to connect for 267ms
 +
Receiving "test_file.txt".../done
 +
Disconnecting..-done
 +
root@cm-debian:~#
 +
</pre>
 +
 
 +
=== Display options ===
 +
CM-T3517 evaluation platform has four video output interfaces: LCD, DVI, LVDS and TV-out. Default configuration of Debian Linux for CM-T3517 uses LCD as primary video output. It is possible to switch between the DVI and LCD interfaces on the fly. TV-out can be used simultaneously with LCD or DVI interface.<br>
 +
Linux implementation of the OMAP3 display subsystem is described in detail in {{filename|[http://gitorious.org/linux-omap-dss2/linux/blobs/master/Documentation/arm/OMAP/DSS Documentation/arm/OMAP/DSS]}} file in the Linux kernel source tree.
 +
 
 +
==== Display resolutions ====
 +
* The Toppoly LCD supplied with CM-T3517 evaluation kit supports 480x640 resolution with 18 bits per color
 +
* The DataImage LCD supplied with CM-T3517 evaluation kit supports 480x800 resolution with 18 bits per color
 +
* DVI output can be configured for standard resolutions using kernel command line parameter {{parameter|omapfb.mode}}:
 +
*: 1024x768 - omapfb.mode=dvi:1024x768-24@60
 +
*: 800x600 - omapfb.mode=dvi:800x600-24@60
 +
*: 640x480 - omapfb.mode=dvi:640x480-24@60
 +
* TV-out supports PAL and NTSC standards
 +
 
 +
==== Examples ====
 +
 
 +
* Switch from LCD to DVI:
 +
<pre>
 +
echo 0 > /sys/devices/platform/omapdss/display0/enabled
 +
echo "dvi" > /sys/devices/platform/omapdss/manager0/display
 +
fbset -fb /dev/fb0 -xres 1024 -yres 768
 +
echo 1 > /sys/devices/platform/omapdss/display1/enabled
 +
</pre>
 +
 
 +
* Switch from DVI to Toppoly LCD:
 +
<pre>
 +
echo 0 > /sys/devices/platform/omapdss/display1/enabled
 +
echo "lcd" > /sys/devices/platform/omapdss/manager0/display
 +
fbset -fb /dev/fb0 -xres 480 -yres 640
 +
echo 1 > /sys/devices/platform/omapdss/display0/enabled
 +
</pre>
 +
 
 +
* Switch from DVI to DataImage LCD:
 +
<pre>
 +
echo 0 > /sys/devices/platform/omapdss/display1/enabled
 +
echo "lcd" > /sys/devices/platform/omapdss/manager0/display
 +
fbset -fb /dev/fb0 -xres 480 -yres 800
 +
echo 1 > /sys/devices/platform/omapdss/display0/enabled
 +
</pre>
 +
 
 +
=== GPIO access ===
 +
Linux provides simple and convenient GPIO access via {{filename|sysfs}} interface. A GPIO should be exported using {{filename|/sys/class/gpio/export}}. After the GPIO is exported it is possible to change its direction and value using {{filename|/sys/class/gpio/gpioX/direction}} and {{filename|/sys/class/gpio/gpioX/value}} attributes.
 +
 
 +
==== Example ====
 +
The following example demonstrates how to configure GPIO 140 as output and set value to high:
 +
<pre>
 +
echo 140 > /sys/class/gpio/export
 +
echo out > /sys/class/gpio/gpio140/direction
 +
echo 1 > /sys/class/gpio/gpio140/value
 +
</pre>
 +
{{Note|The above example assums that the corresponding pin is set to mux '''mode 4''' and the GPIO 140 is '''not''' requested in the Linux kernel.}}
 +
 
 +
=== Graphics SDK ===
 +
The CM-T3517 Linux package contains pre-built and ready to run SGX functionality demo programs.
 +
* The SGX configuration script must be run on CM-T3517 before '''first use''':
 +
<pre>
 +
root@cm-debian:~# /etc/init.d/omap-demo
 +
</pre>
 +
 
 +
* The SGX kernel modules must be loaded prior running the demos:
 +
<pre>
 +
root@cm-debian:~# /etc/init.d/rc.pvr start
 +
</pre>
 +
 
 +
==== Running Graphics SDK OpenGL ES1.x Demos ====
 +
* To run OpenGL ES1.x demos, perform the following:
 +
<pre>
 +
root@cm-debian:~# cd /opt/gfxsdkdemos/ogles
 +
root@cm-debian:/opt/gfxsdkdemos/ogles# ./OGLESEvilSkull
 +
</pre>
 +
This will execute the {{filename|OGLESEvilSkull}} demo. Press {{parameter|‘q’}} on the CM-T3517 console to stop the demo execution.
 +
 
 +
==== Running Graphics SDK OpenGL ES2.0 Demos ====
 +
* To run OpenGL ES2.x demos, perform the following:
 +
<pre>
 +
root@cm-debian:~# cd /opt/gfxsdkdemos/ogles2
 +
root@cm-debian:/opt/gfxsdkdemos/ogles2# ./OGLES2FilmTV
 +
</pre>
 +
This will execute the {{filename|OGLESFilmTV}} demo. Press {{parameter|‘q’}} on the CM-T3517 console to stop the demo
 +
execution.
  
 
== See also ==
 
== See also ==
Line 166: Line 576:
 
* [[CM-T3517: Linux: Getting started]]
 
* [[CM-T3517: Linux: Getting started]]
 
* [[CM-T3517: Linux: Kernel]]
 
* [[CM-T3517: Linux: Kernel]]
 +
* [[CM-T3517: Linux: Building images and tools]]
 
* [[Linux: Development for ARM modules]]
 
* [[Linux: Development for ARM modules]]
 
* [[Linux: Debian: Minimal ARM filesystem]]
 
* [[Linux: Debian: Minimal ARM filesystem]]
 
+
* [http://www.debian.org/doc/manuals/reference/index.en.html Debian Reference].
 +
* [http://www.alsa-project.org ALSA project official website]
 +
* [http://processors.wiki.ti.com/index.php/OMAP_Wireless_Connectivity_Calibration_Proccess_NLCP OMAP Wireless Connectivity Calibration Proccess NLCP]
 +
* [http://processors.wiki.ti.com/index.php/Display_Subsystem Display Subsystem]
 +
* [http://processors.wiki.ti.com/index.php/DSS2_SYSFS_Examples DSS2 SYSFS Examples]
 
[[Category:Linux|Debian]]
 
[[Category:Linux|Debian]]
 
[[Category:CM-T3517|Linux: Debian]]
 
[[Category:CM-T3517|Linux: Debian]]

Latest revision as of 11:09, 25 February 2014

Overview

The example run-time Linux filesystem image for CM-T3517 is based on Debian GNU/Linux Sid. The CompuLab Linux package for CM-T3517 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 Graphics SDK including the Linux graphics (SGX) drivers and ready to run SGX functionality demos

The Getting started with Linux on CM-T3517 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-T3517.

Package contents

version.txt

The contents of the version.txt identifies the package version.

images

  • uImage-cm-t3517 - ready to run Linux kernel image binary for CM-T3517
  • debian-image.ubi - ready to run Debian Linux UBI image for installation onto the NAND flash
  • debian-image.tar.bz2 - archive of the Debian root file system
  • kernel.img - Kernel image required for NAND image installation
  • ramdisk.img - Ramdisk image required for NAND image installation
  • bootscr.img - U-Boot script used for image installation

kernel

  • uImage-3.7.2-cm-t3517-3.bin - ready to run Linux kernel version 3.7.2-cm-t3517-3 for CM-T3517
  • linux-3.7.2-cm-t3517-3.config - Linux kernel 3.7.2-cm-t3517-3 configuration file
  • linux-3.7.2-cm-t3517-3.patch - patch vs. Linux stable kernel 3.7.2 with support for CM-T3517 peripherals
  • patches - ordered collection of patches, that form the single patch above (linux-3.7.2-cm-t3517-3.patch)

utilities

The utilities directory contains miscellaneous utilities useful for development

  • tftpd32.zip - TFTP server for Windows users
  • eeprom-util - CompuLab EEPROM utility for reading information found inside the EEPROM on CompuLab boards
  • ti-utils - TI utility required to calibrate the TI WL12xx devices.
  • bootscr.src - U-Boot script source used for loading kernel and ramdisk images from MMC/SD card
  • debian-image.cfg - configuration file used by ubinize utility for debian-image.ubi generation. For more information about UBIFS images please refer to the Linux Development for ARM modules article.

extra

The extra directory contains files that are not directly connected to the Linux kernel

Graphics_SDK_04.08.00.01 - directory contains graphics (SGX) related files:

  • graphics_sdk_04.08.00.01-cm-t3517-3.patch - patch to fix the Graphics SDK v04.08.00.01 compile time errors
  • patches - ordered collection of patches, that form the single patch above (graphics_sdk_04.08.00.01-cm-t3517-3.patch)

Using Debian Linux on CM-T3517

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-T3517 allows anonymous FTP access. To login into the Linux system, you may use a serial console (ttyO2) at 115200 bps, or connect through the network, or use a keyboard and DVI/LCD display (tty1, tty2, tty3).

Networking

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.

Consoles

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 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

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

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

Audio

CM-T3517 uses the TLV320AIC23B (TI) audio codec. If the default CM-T3517 configuration is used, the audio drivers are modularized and are loaded automatically in the boot process.

Codec driver snd_soc_tlv320aic23 must be loaded before audio driver snd-soc-cm-t3517. A workaround could be adding snd-soc-cm-t3517 entry into /etc/modprobe.d/alsa-base-blacklist.conf and /etc/modules.

More information about Linux audio subsystem can be found at ALSA project official website.

Touchscreen

CM-T3517 Evaluation Kit can be equipped with either of the following LCD touch panels: Toppoly TDO35S or DataImage SCF0403852GGU04. See Select LCD model and LCD and Touchscreen support sections for kernel configuration details to enable support for the particular touchscreen. The touchscreen driver is modularized if you use default CM-T3517 configuration and is loaded by udev automatically on Linux boot. If the touchscreen driver is not loaded, the following command will load the touchscreen driver:

  • For Toppoly TDO35S LCD touch panel:
modprobe ads7846
  • For DataImage SCF0403852GGU04 LCD touch panel:
modprobe hx8520-c

The X Windows system of CM-T3517 uses tslib X server input driver to get the input from the touchscreen.

Touchscreen calibration

Both 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/tslib.sh 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
  • Make sure the touchscreen driver is loaded as described in Touchscreen section
  • 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.

MMC/SD

The support for MMC/SD card on CM-T3517 is built into the Linux kernel. To mount the memory card, monitor /proc/partitions to see what partitions were detected on the MMC/SD card. For example, suppose MMC/SD partition you'd like to mount is mmcblk0p1 then:

if [ ! -d /mnt/mmcblk0p1 ]; then mkdir /mnt/mmcblk0p1; fi
mount /dev/mmcblk0p1 /mnt/mmcblk0p1


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-T3517 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: 00:00:00:00:00:00
Admolition note.png If the NVS file contains MAC of all zeroes, the MAC address is initialized from the chip fuse. It is recommended to not change it.

Controller–area network (CAN)

The CM-T3517 features a TI High End CAN Controller (HECC), integrated into the Sitara AM3517/05 SoC. The TI HECC implements full CAN protocol version 2.0B. It supports both the base (standard) and the extended frame format as well as a programmable data bit rate with maximum of 1Mbit/s.

Loading CAN modules

If the TI HECC driver and/or Raw CAN protocol 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: controller area network core (rev 20090105 abi 8)
NET: Registered protocol family 29
can: raw protocol (rev 20090105)
root@cm-debian:~#
  • Load TI HECC driver module:
root@cm-debian:~# modprobe ti_hecc
CAN device driver interface
TI High End CAN Controller Driver 0.7
ti_hecc ti_hecc.1: device registered (reg_base=d0a08000, irq=24)
root@cm-debian:~#

For information on enabling CAN kernel support, please, see the Linux Kernel for CM-T3517 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-ss100224
root@cm-debian:~#
  • 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
root@cm-debian:~#
  • Enable the CAN interface:
root@cm-debian:~# ip link set can0 up
ti_hecc ti_hecc.1: setting CANBTC=0xc0028
root@cm-debian:~#
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:/usr/local/can-utils# cansend can0 111#1122334455667788
root@cm-debian:/usr/local/can-utils# 
  • Send extended CAN frame (on the first device):
root@cm-debian:/usr/local/can-utils# cansend can0 11111111#1122334455667788
root@cm-debian:/usr/local/can-utils# 
  • Dump all received data frames as well as error frames (on the second device):
root@cm-debian:/usr/local/can-utils# 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

USB On-The-Go (OTG)

CM-T3517 features a Mentor Graphic's USB OTG2.0 high-speed USB On-The-Go (OTG) controller. CM-T3517 OTG port is USB host and USB device (gadget) capable.

Host and Gadget drivers are compiled as modules with default CM-T3517 kernel configuration. Both should be loaded for OTG support.

  • Load Host driver:
root@cm-debian:~# modprobe am35x
musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
<6>Waiting for PHY clock good...
musb-hdrc musb-hdrc: >USB OTG mode controller at d0eca000 using PIO, IRQ 71
root@cm-debian:~#
  • Load Gadget driver:
root@cm-debian:~# modprobe g_serial
 gadget: >Gadget Serial v2.4
 gadget: >g_serial ready
musb-hdrc musb-hdrc: >MUSB HDRC host driver
musb-hdrc musb-hdrc: >new USB bus registered, assigned bus number 2
usb usb2: >New USB device found, idVendor=1d6b, idProduct=0002
usb usb2: >New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: >Product: MUSB HDRC host driver
usb usb2: >Manufacturer: Linux 3.5.7-cm-t3517+ musb-hcd
usb usb2: >SerialNumber: musb-hdrc
hub 2-0:1.0: >USB hub found
hub 2-0:1.0: >1 port detected
root@cm-debian:~#

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

Testing OTG port

  • Host mode. Connect USB keyboard to OTG port.
usb 2-1: >new low-speed USB device number 3 using musb-hdrc
usb 2-1: >device v413c p2107 is not supported
usb 2-1: >New USB device found, idVendor=413c, idProduct=2107
usb 2-1: >New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: >Product: Dell USB Entry Keyboard
usb 2-1: >Manufacturer: Dell
input: Dell Dell USB Entry Keyboard as /devices/platform/musb-am35x/musb-hdrc/usb2/2-1/2-1:1.0/input/input4
hid-generic 0003:413C:2107.0004: >input: USB HID v1.10 Keyboard [Dell Dell USB Entry Keyboard] on usb-musb-hdrc-1/input0
  • Gadget mode. Connect desktop PC to OTG port.
gadget: >high-speed config #2: CDC ACM config

Bluetooth

CM-T3517 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
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Device setup complete
root@cm-debian:~#
  • 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: 1C:45:93:3E:5D:86  ACL MTU: 1021:4  SCO MTU: 180:4
	UP RUNNING PSCAN 
	RX bytes:6085 acl:38 sco:0 events:279 errors:0
	TX bytes:118688 acl:164 sco:0 commands:78 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: 0x080100
	Service Classes: Capturing
	Device Class: Computer, Uncategorized
	HCI Version: 4.0 (0x6)  Revision: 0x0
	LMP Version: 4.0 (0x6)  Subversion: 0x1f29
	Manufacturer: Texas Instruments Inc. (13)
root@cm-debian:~# 

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
root@cm-debian:~#
  • 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
null
    Discard all samples (playback) or generate zero samples (capture)
btheadphones
    BT Headphones
default:CARD=cmt3517
    cm-t3517,
    Default Audio Device
sysdefault:CARD=cmt3517
    cm-t3517,
    Default Audio Device
root@cm-debian:~# 
  • 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/1335/hci0/dev_00_07_A4_F2_B3_CB)
Enter PIN Code: 0000
Release
New device (/org/bluez/1335/hci0/dev_00_07_A4_F2_B3_CB)
root@cm-debian:~# 
  • Launch aplay playback tool:
root@cm-debian:~# aplay -D btheadphones sample_audio.wav
Playing WAVE 'sample_audio.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo

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-T3517 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-T3517, 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
root@cm-debian:~#
  • 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

root@cm-debian:~# 
  • 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
Release
New device (/org/bluez/1285/hci0/dev_00_15_2A_20_63_94)

root@cm-debian:~#


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 ...
Connecting..\done
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"/>
</folder-listing>
done
Disconnecting..-done
root@cm-debian:~#
  • Transfer a file from CM-T3517 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 ...
Connecting..\done
Tried to connect for 380ms
Sending "test_file.txt"...|done
Disconnecting../done
root@cm-debian:~#
  • Retrieve a file from the phone to CM-T3517:
root@cm-debian:~# obexftp -b 00:15:2A:20:63:94 --get test_file.txt 
Browsing 00:15:2A:20:63:94 ...
Connecting..\done
Tried to connect for 267ms
Receiving "test_file.txt".../done
Disconnecting..-done
root@cm-debian:~#

Display options

CM-T3517 evaluation platform has four video output interfaces: LCD, DVI, LVDS and TV-out. Default configuration of Debian Linux for CM-T3517 uses LCD as primary video output. It is possible to switch between the DVI and LCD interfaces on the fly. TV-out can be used simultaneously with LCD or DVI interface.
Linux implementation of the OMAP3 display subsystem is described in detail in Documentation/arm/OMAP/DSS file in the Linux kernel source tree.

Display resolutions

  • The Toppoly LCD supplied with CM-T3517 evaluation kit supports 480x640 resolution with 18 bits per color
  • The DataImage LCD supplied with CM-T3517 evaluation kit supports 480x800 resolution with 18 bits per color
  • DVI output can be configured for standard resolutions using kernel command line parameter omapfb.mode:
    1024x768 - omapfb.mode=dvi:1024x768-24@60
    800x600 - omapfb.mode=dvi:800x600-24@60
    640x480 - omapfb.mode=dvi:640x480-24@60
  • TV-out supports PAL and NTSC standards

Examples

  • Switch from LCD to DVI:
echo 0 > /sys/devices/platform/omapdss/display0/enabled
echo "dvi" > /sys/devices/platform/omapdss/manager0/display
fbset -fb /dev/fb0 -xres 1024 -yres 768
echo 1 > /sys/devices/platform/omapdss/display1/enabled
  • Switch from DVI to Toppoly LCD:
echo 0 > /sys/devices/platform/omapdss/display1/enabled
echo "lcd" > /sys/devices/platform/omapdss/manager0/display
fbset -fb /dev/fb0 -xres 480 -yres 640
echo 1 > /sys/devices/platform/omapdss/display0/enabled
  • Switch from DVI to DataImage LCD:
echo 0 > /sys/devices/platform/omapdss/display1/enabled
echo "lcd" > /sys/devices/platform/omapdss/manager0/display
fbset -fb /dev/fb0 -xres 480 -yres 800
echo 1 > /sys/devices/platform/omapdss/display0/enabled

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.

Example

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

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

Graphics SDK

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

  • The SGX configuration script must be run on CM-T3517 before first use:
root@cm-debian:~# /etc/init.d/omap-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-T3517 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-T3517 console to stop the demo execution.

See also