第8章 Debian GNU/Linuxで各種機能を使用する

本章では、Debian で Armadillo-800 EVA の機能を使用する方法について記載します。本章に記載のある手順を実行するためには、事前に7章Debian GNU/Linuxで起動するを参照し、起動およびログインが完了している必要があります。

8.1. 有線LAN

有線LANを使用する方法について記載します。

工場出荷状態のDebianは有線LANが無効になっています。ifupコマンドを使用して有線LANを有効化する手順を、図8.1「ifupコマンドによる有線LANの有効化」に示します。

[armadillo ~]# ifup eth0  1
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

net eth0: attached phy 0 to driver Generic PHY
Listening on LPF/eth0/00:11:0c:00:04:d7
Sending on   LPF/eth0/00:11:0c:00:04:d7
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
PHY: 0:00 - Link is Up - 100/Full
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 172.16.0.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 172.16.0.1
bound to 172.16.2.237 -- renewal in 33138 seconds.
[armadillo ~]# ifconfig eth0  2
eth0      Link encap:Ethernet  HWaddr 00:11:0c:00:04:d7
          inet addr:172.16.2.237  Bcast:172.16.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:876 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:316114 (308.7 KiB)  TX bytes:13236 (12.9 KiB)
          Interrupt:142 DMA chan:ff

1

有線LANインターフェースを有効化します。工場出荷状態のDebianでは、DHCPを利用してネットワーク設定が行われるようになっています。

2

有線LANインターフェースの状態を表示します。

図8.1 ifupコマンドによる有線LANの有効化


ifupコマンドを使用して有効化された有線LANを再度無効化するには、ifdownコマンドを使用します。手順を図8.2「ifdownコマンドによる有線LANの無効化」に示します。

[armadillo ~]# ifdown eth0  1
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:11:0c:00:04:d7
Sending on   LPF/eth0/00:11:0c:00:04:d7
Sending on   Socket/fallback
DHCPRELEASE on eth0 to 172.16.0.1 port 67
[armadillo ~]# ifconfig eth0  2
eth0      Link encap:Ethernet  HWaddr 00:11:0c:00:04:d7
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:332666 (324.8 KiB)  TX bytes:13638 (13.3 KiB)
          Interrupt:142 DMA chan:ff

1

有線LANインターフェースを無効化します。

2

有線LANの状態を表示します。

図8.2 ifdownコマンドによる有線LANの無効化


[ティップ]

ifupおよびifdownコマンドは、/etc/network/interfacesに記述された動作を行います。工場出荷状態では、DHCPサーバーからIPアドレスを取得するよう設定されています。interfacesを変更することで、静的IPアドレスの設定や、起動時に自動的に有効化することができます。詳しくはinterfacesのマニュアルページを参照してください。

[armadillo ~]# man 5 interfaces

8.2. 無線LAN

Armadillo-800 EVAに搭載されている無線LANモジュール Armadillo-WLAN(AWL13)を使用する方法について記載します。

無線通信を行うためには以下の作業が必要となりますが、Armadillo-800 EVAに標準でインストールされているDebianでは、udevによって1.および2.を自動的に行うように設定することが可能です。

  1. カーネルモジュールをロードする

  2. ファームウェアをロードする

  3. 無線設定を行う

8.2.1. 準備

8.2.1.1. カーネルモジュール/ファームウェアロードの自動化

udevがAWL13を検出した場合に、自動的にカーネルモジュールをロードできるようにするために、depmodコマンドを実行します。

[armadillo ~]# ls /lib/modules/$(uname -r)
awl13
[armadillo ~]# depmod
[armadillo ~]# ls /lib/modules/$(uname -r)
awl13              modules.dep      modules.softdep
modules.alias      modules.dep.bin  modules.symbols
modules.alias.bin  modules.devname  modules.symbols.bin

再起動を行うと、自動的にカーネルモジュールがロードされるようになります。再起動を行うには、rebootコマンドを実行します。

[armadillo ~]# reboot

カーネルモジュールがロードされると、udevが自動的にファームウェアのロードを行います。起動ログに以下のように表示されることで、カーネルモジュールおよびファームウェアのロードに成功したことが確認できます。

awl13: Version 3.0.0 Load.
awl13: MAC is 00:1d:12:cf:29:65
[ティップ]

depmodコマンド実行後、Armadillo-800 EVAを再起動させずに、udevにAWL13を検出させたい場合は、以下のコマンドを実行してください。

[armadillo ~]# udevadm trigger

[ティップ]

カーネルモジュールがロードされない場合は、「ディップスイッチの設定」を参照してSW1(ディップスイッチ)の設定を確認してください。CON14(AWL13 モジュールインターフェース)とCON8(SD2インターフェース)は排他になっており、どちらか一方しか使用することができません。AWL13を使用する場合は、ディップスイッチのSDHI1設定(SW1.5)をOFFに設定してください。

8.2.2. 無線設定

インフラストラクチャモードおよびアドホックモードの無線設定について記載します。より詳細な設定方法については、「Armadillo-WLAN(AWL13) ソフトウェアマニュアル」を参照してください。

[ティップ]

有線LANインターフェースを使用してネットワークに接続している場合、ネットワーク通信時に AWL13 が使用されない場合があります。確実に無線通信を行いたい場合は、図8.2「ifdownコマンドによる有線LANの無効化」を参照して有線LANインターフェースを無効にしてください。

[ティップ]

使用環境によっては、無線LAN通信が不安定になる場合があります。そのような環境下では、外付けアンテナを取り付けることで問題が改善する場合があります。外付けアンテナに関する情報は、「Armadillo-WLAN(AWL13) ハードウェアマニュアル」を参照してください。

8.2.2.1. 無線設定パラメーター

無線通信を行うための基本的な設定パラメーターについて記載します。設定には、Wireless Tools[3]に含まれるiwconfig/iwprivコマンドを使用します。

8.2.2.2. インフラストラクチャモード設定例

AWL13 をインフラストラクチャモードに設定し、アクセスポイントに接続する設定例を示します。アクセスポイントの暗号化方式が WPA-PSK、または WPA2-PSKの場合は「インフラストラクチャモード: WPA-PSK/WPA2-PSK」を、WEPの場合は「インフラストラクチャモード: WEP」を参照してください。

8.2.2.2.1. インフラストラクチャモード: WPA-PSK/WPA2-PSK

WPA-PSK/WPA2-PSKに設定されたアクセスポイントに接続する例として、設定パラメーターを表8.1「インフラストラクチャモード: WPA-PSK/WPA2-PSKパラメーター例」に、設定手順を図8.3「インフラストラクチャモード: WPA2-PSK(AES)設定手順」に示します。

表8.1 インフラストラクチャモード: WPA-PSK/WPA2-PSKパラメーター例

項目設定値
ESSIDmyessid
パスフレーズmypassphrase
暗号化方式WPA2-PSK(AES)
IPアドレス192.168.0.1

[armadillo ~]# iwconfig awlan0 essid myessid  1
[armadillo ~]# iwconfig awlan0 mode Managed  2
[armadillo ~]# iwpriv awlan0 set_psk mypassphrase  3
[armadillo ~]# iwpriv awlan0 set_cryptmode WPA2-AES  4
[armadillo ~]# ifconfig awlan0 192.168.0.1 up  5

1

SSID にmyessid を設定します。

2

通信モードをインフラストラクチャモードに設定します。

3

パスフレーズに mypassphrase を設定します。

4

暗号化方式に WPA2-PSK(AES) を設定します。

5

無線LANインターフェースを有効化します。IPアドレスは 192.168.0.1 を設定します。

図8.3 インフラストラクチャモード: WPA2-PSK(AES)設定手順


設定確認手順を図8.4「インフラストラクチャモード: WPA2-PSK(AES)設定確認手順」に示します。 iwconfig コマンドの結果で、Access Point:に BSSID(アクセスポイントの MAC アドレス)が表示されていれば、アクセスポイントへの接続は完了です。

[armadillo ~]# iwconfig awlan0  1
awlan0    IEEE 802.11bgn  ESSID:"myessid"
          Mode:Managed  Frequency:2.412 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate=65 Mb/s
          Encryption key:off
          Power Management:off
          Link Signal level=-37 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
[armadillo ~]# ifconfig awlan0  2
awlan0    Link encap:Ethernet  HWaddr 00:1d:12:cf:29:65
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6760 (6.6 KiB)  TX bytes:1196 (1.1 KiB)

1

無線LAN固有の状態を表示します。

2

無線LANインターフェースの状態を表示します。

図8.4 インフラストラクチャモード: WPA2-PSK(AES)設定確認手順


8.2.2.2.2. インフラストラクチャモード: WEP

WEPに設定されたアクセスポイントに接続する例として、設定パラメーターを表8.2「インフラストラクチャモード: WEPパラメーター例」に、設定手順を図8.5「インフラストラクチャモード: WEP設定手順」に示します。

表8.2 インフラストラクチャモード: WEPパラメーター例

項目設定値
ESSIDmyessid
WEPキー(WEP-64ビット)1234567890
IPアドレス192.168.0.1

[armadillo ~]# iwconfig awlan0 essid myessid  1
[armadillo ~]# iwconfig awlan0 mode Managed  2
[armadillo ~]# iwconfig awlan0 enc 1234567890  3
[armadillo ~]# ifconfig awlan0 192.168.0.1 up  4

1

SSID にmyessid を設定します。

2

通信モードをインフラストラクチャモードに設定します。

3

WEPキーに 1234567890 を設定します。暗号化方式は、キー長に応じて適切に設定されます。

4

無線LANインターフェースを有効化します。IPアドレスは 192.168.0.1 を設定します。

図8.5 インフラストラクチャモード: WEP設定手順


設定確認手順を図8.6「インフラストラクチャモード: WEP設定確認手順」に示します。 iwconfig コマンドの結果で、Access Point:に BSSID(アクセスポイントの MAC アドレス)が表示されていれば、アクセスポイントへの接続は完了です。

[armadillo ~]# iwconfig awlan0  1
awlan0    IEEE 802.11bgn  ESSID:"myessid"
          Mode:Managed  Frequency:2.412 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate=65 Mb/s
          Encryption key:1234-5678-90
          Power Management:off
          Link Signal level=-37 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
[armadillo ~]# ifconfig awlan0  2
awlan0    Link encap:Ethernet  HWaddr 00:1d:12:cf:29:65
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6760 (6.6 KiB)  TX bytes:1196 (1.1 KiB)

1

無線LAN固有の状態を表示します。

2

無線LANインターフェースの状態を表示します。

図8.6 インフラストラクチャモード: WEP設定確認手順


8.2.2.3. アドホックモード設定例

AWL13 をアドホックモードに設定し、アドホック端末に接続する設定例を示します。

[ティップ]

アドホックモードでは、WPA/WPA2には対応していません。

8.2.2.3.1. アドホックモード: WEP-128ビット

WEPに設定されたアドホック端末に接続する例として、設定パラメーターを表8.3「アドホックモード: WEPパラメーター例」に、設定手順を図8.7「アドホックモード: WEP設定手順」に示します。

表8.3 アドホックモード: WEPパラメーター例

項目設定値
ESSIDmyessid
WEPキー(WEP-128ビット)12345678901234567890123456
チャンネル1
IPアドレス192.168.0.1

[armadillo ~]# iwconfig awlan0 essid myessid  1
[armadillo ~]# iwconfig awlan0 mode Ad-Hoc  2
[armadillo ~]# iwconfig awlan0 enc 12345678901234567890123456  3
[armadillo ~]# iwconfig awlan0 channel 1  4
[armadillo ~]# ifconfig awlan0 192.168.0.1 up  5

1

SSID にmyessid を設定します。

2

通信モードをアドホックモードに設定します。

3

WEPキーに 12345678901234567890123456 を設定します。暗号化方式は、キー長に応じて適切に設定されます。

4

チャンネルに 1 を設定します。

5

無線LANインターフェースを有効化します。IPアドレスは 192.168.0.1 を設定します。

図8.7 アドホックモード: WEP設定手順


設定確認手順を図8.8「アドホックモード: WEP設定確認手順」に示します。

[armadillo ~]# iwconfig awlan0  1
awlan0    IEEE 802.11bgn  ESSID:"myessid"
          Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 8E:1F:40:6D:7A:3F
          Bit Rate=0 kb/s
          Encryption key:1234-5678-9012-3456-7890-1234-56
          Power Management:off
          Link Signal level=-37 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
[armadillo ~]# ifconfig awlan0  2
awlan0    Link encap:Ethernet  HWaddr 00:1d:12:cf:29:65
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6760 (6.6 KiB)  TX bytes:1196 (1.1 KiB)

1

無線LAN固有の状態を表示します。

2

無線LANインターフェースの状態を表示します。

図8.8 アドホックモード: WEP設定確認手順


8.3. 時刻設定

時刻を設定する方法について記載します。時刻には、Linuxカーネルが管理するシステムクロックと、リアルタイムクロックが管理するハードウェアクロックの2種類があります。ハードウェアクロックに時刻を設定すると、電源を切断しても一定時間時刻を保持することができます。

ハードウェアクロックに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。

[armadillo ~]# date 010609002012  1
[armadillo ~]# date  2
Fri Jan  6 09:00:05 UTC 2012

1

システムクロックを2012年1月6日9時00分[4]に設定します。

2

システムクロックを確認します。

図8.9 システムクロックの設定


[armadillo ~]# hwclock -wu  1
[armadillo ~]# hwclock  2
Fri Jan  6 09:00:14 2012  -0.319894 seconds

1

ハードウェアクロックにシステムクロックを設定します。

2

ハードウェアクロックを確認します。

図8.10 ハードウェアクロックの設定


リアルタイムクロックを設定しておくと、電源を切断/接続した場合でもDebianの起動時にリアルタイムクロックの値がシステムクロックに設定されるため、システムクロックを再設定する必要が無くなります。電源を長時間切断する場合は、RTC外部バックアップインターフェース(CON9)に電池を接続する必要があります。

8.4. パッケージ管理

パッケージ管理システム APT(Advanced Packaging Tool)を使用して、パッケージを管理する方法について記載します。工場出荷状態のDebianには動作に必要な最低限のパッケージしかインストールされていませんが、APTを使用することで、簡単にパッケージを追加することができます。

工場出荷状態では、APTはインターネット上のDebianサイト(HTTPサーバー)から利用可能なパッケージのインデックスを取得します[5]。そのため、APTを使用するためにはネットワークを有効化し、インターネットに接続できる状態にしておく必要があります。

ネットワークを有効化する方法については、「有線LAN」または、「無線LAN」を参照してください。

[ティップ]

システムクロックが大幅にずれた状態で、APTを利用すると警告メッセージが出力される場合があります。事前に「時刻設定」を参照してシステムクロックを合わせてください。

8.5. GStreamer

GStreamer のインストールと使用方法について記載します。

GStreamer はオープンソースのマルチメディアのフレームワークです。動画や音声などを使用するマルチメディアアプリケーションの基礎となる機能を提供します。

GStreamer には、動作確認用のテストツールとしてgst-launchコマンドが用意されています。gst-launchを使用すると、プログラムを作成することなくGStreamer の機能を使用することができます。

以下に示す機能の使用には、gst-launchを利用します。

8.5.1. GStreamerのインストール

GStreamer のインストールには APTを使用します。APTの使用方法については、「パッケージ管理」を参照してください。

APTを使用して GStreamer をインストールするには、次のようにコマンドを実行します。

[armadillo ~]# apt-get install gstreamer0.10 gstreamer-tools

図8.11 GStreamerのインストール


8.5.2. GStreamerの使用

本書では、GStreamer をgst-launchコマンドを使用して利用します。

GStreamerでは、特定の機能を持ったエレメントをリンクすることによって、目的とする機能を実現します。gst-launchでは、エクスクラメーションマーク「!」によってエレメントをリンクします。

エレメントは、マルチメディアデータを入力または出力することのできるパッドを持ちます。エレメントは、エレメントが持つパッドによって3種類に分類されます。

表8.4 エレメントの種類

エレメント説明
ソースエレメント出力用のパッドのみを持ちます。
フィルタエレメント入力用と出力用のパッドをそれぞれ1つ以上持ちます。
シンクエレメント入力用のパッドのみを持ちます。

ソースエレメントとシンクエレメントのみを持ったgst-launchの使用例を以下に示します。

[armadillo ~]# gst-launch audiotestsrc ! alsasink

図8.12 テスト音声の再生


audiotestsrcは、テスト音声(440Hzの正弦波)を生成するソースエレメントです。alsasinkは、ALSAデバイスに音声を出力するシンクエレメントです。この2つのエレメントをリンクすることで、テスト音声をALSAデバイスに出力します。

Armadillo-800 EVAは、audiotestsrcがデフォルトで生成するテスト音声のフォーマットに対応していません。audiotestsrcのプロパティを指定して、Armadillo-800 EVAのステレオヘッドホン出力(CON11)に接続したヘッドホンからテスト音声を出力する例を以下に示します。

[armadillo ~]# gst-launch -v audiotestsrc ! 'audio/x-raw-int,channels=2,width=16' ! alsasink

図8.13 Armadillo-800 EVAでのテスト音声の再生


GStreamer のより詳細な情報については、GStreamer公式サイト(http://gstreamer.freedesktop.org/)を参照してください。

8.6. Xサーバー

Xサーバーのインストールと起動方法について記載します。

以下に示す機能の使用には、Xサーバーを利用します。

8.6.1. Xサーバーのインストール

Xサーバーのインストールには APTを使用します。APTの使用方法については、「パッケージ管理」を参照してください。

APTを使用して Xサーバーをインストールするには、次のようにコマンドを実行します。

[armadillo ~]# apt-get install xserver-xorg-core

図8.14 Xサーバーのインストール


8.6.2. Xサーバーの起動

Xサーバーが使用するビデオ出力を指定して、Xサーバーを起動する方法について記載します。Armadillo-800 EVAでは、以下のビデオ出力をサポートしています。

ビデオ出力フレームバッファデバイス備考
LCD/dev/fb0CON17に接続されたArmadillo-800 EVA付属の液晶パネルです。
ディスプレイ/dev/fb1CON3またはCON4に接続されたディスプレイです。
[ティップ]

CON3(デジタルHD 出力インターフェース)とCON4(コンポジットビデオ出力インターフェース)は排他になっており、どちらか一方しか使用することができません。工場出荷状態では、CON3が使用されます。CON4を使用する場合は、「ディスプレイのビデオモードを設定する」を参照してビデオモードをU:720x480i-60に設定してください。

Xサーバーはデフォルトで/dev/fb0を使用しますが、環境変数 $FRAMEBUFFER によって使用するフレームバッファデバイスを指定することできます。

Xサーバーが使用するビデオ出力として、LCDを使用するには図8.15「Xサーバーの起動(LCD)」を、ディスプレイを使用するには図8.16「Xサーバーの起動(ディスプレイ)」のようにコマンドを実行します。

[armadillo ~]# X -retro &

図8.15 Xサーバーの起動(LCD)


[armadillo ~]# FRAMEBUFFER=/dev/fb1 X -retro :1 &

図8.16 Xサーバーの起動(ディスプレイ)


Xサーバーが起動するとビデオに図8.17「Xサーバー起動画面」のように起動画面が表示されます。

Xサーバー起動画面

図8.17 Xサーバー起動画面


[ティップ]

Xサーバーの起動オプション "-retro" を指定する目的は、起動画面によってXサーバーの正常起動を確認しやすくするためです。不要であれば指定する必要はありません。

[ティップ]

ディスプレイに表示されたXサーバー起動画面のちらつきが気になる場合は、次のようにコマンドを実行してください。

[armadillo ~]# FRAMEBUFFER=/dev/fb1 X -wr :1 &

Xサーバーの起動オプション "-retro" を指定した場合は網目模様の背景が表示されますが、"-wr"を指定した場合は単色白色の背景が表示されます。

8.7. ビデオ

ビデオを使用する方法について記載します。工場出荷状態では、以下のビデオ出力をサポートしています。

ビデオ出力フレームバッファデバイス解像度(デフォルト)備考
LCD/dev/fb0800 × 480CON17に接続されたArmadillo-800 EVA付属の液晶パネルです。
ディスプレイ/dev/fb11920 × 1080CON3またはCON4に接続されたディスプレイです。

8.7.1. ビデオに画像を表示する

ビデオに画像を表示させる方法について記載します。画像の表示には、GStreamerを利用します。インストールされていない場合は、図8.11「GStreamerのインストール」を参照してインストールしてください。

また、GStreamerからビデオへの直接描画はできないため、Xサーバーを利用します。事前に「Xサーバー」を参照してXサーバーを起動してください。

任意のJPEG画像をLCDに表示する手順を図8.18「JPEG画像の表示(LCD)」に、ディスプレイに表示する手順を図8.19「JPEG画像の表示(ディスプレイ)」に示します。

[armadillo ~]# DISPLAY=:0 gst-launch filesrc location=sample.jpg ! jpegdec ! freeze ! ffmpegcolorspace ! autovideosink

図8.18 JPEG画像の表示(LCD)


[armadillo ~]# DISPLAY=:1 gst-launch filesrc location=sample.jpg ! jpegdec ! freeze ! ffmpegcolorspace ! autovideosink

図8.19 JPEG画像の表示(ディスプレイ)


[ティップ]

JPEGファイルのサンプルには、gnome-backgroundsパッケージに含まれるファイルを利用することができます。JPEGファイルをLCDの解像度に合わせて表示するコマンド例を以下に示します。

[armadillo ~]# apt-get install gnome-backgrounds imagemagick
[armadillo ~]# cp /usr/share/pixmaps/backgrounds/gnome/nature/YellowFlower.jpg .
[armadillo ~]# convert -geometry 800x480! YellowFlower.jpg sample.jpg
[armadillo ~]# X -retro &
[armadillo ~]# DISPLAY=:0 gst-launch filesrc location=sample.jpg ! jpegdec ! freeze ! ffmpegcolorspace ! autovideosink

図8.20 gnome-backgroundsパッケージの画像ファイルを利用


8.7.2. ディスプレイのビデオモードを設定する

ディスプレイのビデオモードを設定する方法について記載します。

[注記]

linux-2.6.35-a800eva-at1 では、ビデオモードの設定に対応していません。以下に示す手順を実行しても、設定が正常に反映されません。

設定可能なビデオモードは、以下のように表示することができます。

[armadillo ~]# cat /sys/class/graphics/fb1/modes
U:720x480i-60
U:720x480p-60
U:1280x720p-60
U:1920x1080p-24
U:1920x1080p-60
U:1920x1080i-60

図8.21 設定可能なビデオモードの表示(ディスプレイ)


[警告]

U:1920x1080p-60はサポートしていません。U:1920x1080p-60へのビデオモードの設定は、自己責任のもと行ってください。

Armadillo-800 EVAがサポートしているビデオモードを以下に示します。

ビデオモード解像度走査方式フレームレート出力先インターフェース
U:720x480i-60720 × 480インターレース60コンポジットビデオ出力(CON4)
U:720x480p-60720 × 480プログレッシブ60デジタルHD 出力(CON3)
U:1280x720p-601280 × 720プログレッシブ60デジタルHD 出力(CON3)
U:1920x1080p-241920 × 1080プログレッシブ24デジタルHD 出力(CON3)
U:1920x1080i-601920 × 1080インターレース60デジタルHD 出力(CON3)

ディスプレイのビデオモードをU:1280x720p-60に設定する例を図8.22「ビデオモードの設定(ディスプレイ)」に示します。

[armadillo ~]# echo U:1280x720p-60 > /sys/class/graphics/fb1/mode

図8.22 ビデオモードの設定(ディスプレイ)


8.8. カメラ

カメラモジュールインターフェース(CON1)に搭載されたカメラから取得した映像を LCD に表示させる方法について記載します。映像の取得および表示には、GStreamer を利用します。インストールされていない場合は図8.11「GStreamerのインストール」を参照してインストールしてください。

また、GStreamerからビデオへの直接描画はできないため、Xサーバーを利用します。事前に「Xサーバー」を参照してXサーバーを起動してください。

カメラから取得した映像をLCDに出力するには、次のようにコマンドを実行します。アプリケーションを停止するには、Ctrl+cを押下してください。

[armadillo ~]# DISPLAY=:0 gst-launch v4l2src ! "video/x-raw-yuv,width=800,height=480,format=(fourcc)NV12" ! ffmpegcolorspace ! autovideosink

図8.23 カメラの映像をLCDに表示


[警告]

LCDにカメラから取得した映像が表示されない場合は、Armadillo-800 EVAを再起動し、再度図8.23「カメラの映像をLCDに表示」を実行してください。

8.9. オーディオ

オーディオの再生・録音を行う方法について記載します。Armadillo-800 EVAのオーディオ機能は、ALSAデバイスとして実装されています。ALSAデバイスとインターフェースの対応を、表8.5「ALSAデバイスとインターフェースの対応」に示します。

表8.5 ALSAデバイスとインターフェースの対応

ALSAデバイスインターフェース機能サンプリング周波数フォーマット
hw:0モノラルマイク入力(CON10)録音48k, 32k, 16k, 8k HzSigned 16/24 bit, Little-endian
ステレオヘッドホン出力(CON11)再生
ステレオライン出力(CON12,13)
hw:1デジタル出力(CON3)再生48k HzSigned 16 bit, Little-endian

オーディオの再生および録音にはGStreamer を使用します。インストールされていない場合は図8.11「GStreamerのインストール」を参照してインストールしてください。

オーディオを動作させるためには、各インターフェースに表8.6「オーディオインターフェースに接続する機材」に示す機材を接続しておく必要があります。

表8.6 オーディオインターフェースに接続する機材

インターフェース機材
モノラルマイク入力(CON10)マイク
ステレオヘッドホン出力(CON11)スピーカーまたはヘッドホン
ステレオライン出力(CON12,13)ディスプレイ(RCAケーブルで接続)
デジタル出力(CON3)ディスプレイ(HDMIケーブルで接続)

音声を録音する手順を図8.24「音声の録音」に示します。サンプリングレートが48kHz、ステレオのWAVファイル(sample.wav)を作成します。

[armadillo ~]# gst-launch alsasrc ! 'audio/x-raw-int,channels=2,rate=48000,width=16' ! audioresample ! wavenc ! filesink location=sample.wav
[armadillo ~]# file sample.wav
sample.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz

図8.24 音声の録音


任意の音声ファイルを再生する手順を図8.25「音声ファイルの再生(hw:0)」および図8.26「音声ファイルの再生(hw:1)」に示します。音声ファイルはカレントディレクトリ以下にあることを想定しています。ここで使用する音声ファイルは、サンプリングレートが48kHz、ステレオのWAVファイル(sample.wav)を想定しています。

[armadillo ~]# file sample.wav
sample.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz
[armadillo ~]# gst-launch filesrc location=sample.wav ! decodebin ! audioconvert ! audioresample ! alsasink

図8.25 音声ファイルの再生(hw:0)


[armadillo ~]# file sample.wav
sample.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz
[armadillo ~]# gst-launch filesrc location=sample.wav ! decodebin ! audioconvert ! audioresample ! alsasink device=hw:1

図8.26 音声ファイルの再生(hw:1)


マイクの音声をそのまま hw:0 に出力する手順を図8.27「マイク入力を hw:0 に出力」に示します。

[armadillo ~]# gst-launch alsasrc ! 'audio/x-raw-int,channels=2,rate=48000,width=16' ! audioresample ! alsasink

図8.27 マイク入力を hw:0 に出力


[ティップ]

音声ファイルのサンプルには、gnome-audioパッケージに含まれるファイルを利用することができます。パッケージに含まれる音声ファイル(WAV)は、44.1kHzでサンプリングされているため、48kHzにリサンプリングする必要があります。

[armadillo ~]# apt-get install gnome-audio resample
[armadillo ~]# cp /usr/share/sounds/login.wav .
[armadillo ~]# resample -to 48000 login.wav sample.wav
[armadillo ~]# gst-launch filesrc location=sample.wav ! decodebin ! audioconvert ! audioresample ! alsasink

図8.28 gnome-audioパッケージの音声ファイルを利用


8.10. ストレージ

ストレージを使用する方法について記載します。Armadillo-800 EVAでは、内蔵ストレージ(eMMC)の他にSDカードやUSBメモリなどの外部ストレージを使用することができます。外部ストレージを使用することで、容易に作業用PCなどとデータ転送を行うことができます。

ストレージとして使用可能なデバイスを表8.7「ストレージデバイス」に示します。

表8.7 ストレージデバイス

デバイスディスクデバイス先頭パーティション備考
eMMC/dev/mmcblk0/dev/mmcblk0p1内蔵ストレージ。容量8GB。
SD/MMCカード/dev/mmcblk*[a]/dev/mmcblk*p1外部ストレージ。SD1(CON7)またはSD2(CON8)に接続。
USBメモリ/dev/sd*[b]/dev/sd*1外部ストレージ。USB1(CON20)またはUSB2(CON21)に接続。

[a] ストレージが認識された順に、mmcblk1 mmcblk2となります。

[b] ストレージが認識された順に、sda sdb sdc ... となります。


[警告]

工場出荷状態の eMMC はいくつかのパーティションに分割されており、それぞれのパーティションに OS やブートローダーなどのソフトウェアが格納されています。eMMC をストレージとして使用する場合は、使用しているソフトウェアが格納されたパーティションへの書き込みを行わないようご注意ください。

[ティップ]

SD2(CON8)とAWL13モジュール(CON14)は排他になっており、どちらか一方しか使用することができません。SD2に接続したSD/MMCカードを使用する場合は、ディップスイッチのSDHI1設定(SW1.5)をONに設定してください。

[ティップ]

USB1(CON20)とUSB3(CON24)は排他になっており、どちらか一方しか使用することができません。USB1に接続したUSBメモリを使用する場合は、ディップスイッチのUSB0設定(SW1.6)をOFFに設定してください。

8.10.1. ストレージの使用方法

ここでは、USBメモリを例にストレージの使用方法を説明します。

ストレージを使用可能にするには、ルートファイルシステムにストレージのファイルシステムをマウントする必要があります。マウントを行うコマンドは mount です。USBメモリの先頭パーティションに構築されたFAT32ファイルシステムを、ルートファイルシステムの/mnt/ディレクトリにマウントするには、次のようにコマンドを実行します。

[armadillo ~]# mount -t vfat /dev/sda1 /mnt

図8.29 ストレージのマウント


[ティップ]

他のファイルシステムタイプが構築されたストレージのマウント方法など、詳くはmountのマニュアルページを参照してください。

[armadillo ~]# man 8 mount

[ティップ]

Linuxカーネルがサポートしているファイルシステムは、以下のように調べることができます。

[armadillo ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
    :
    : (割愛)
    :

マウントされたストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドはumountです。/mnt/ディレクトリにマウントされたストレージをアンマウントするには、次のようにコマンドを実行します。

[armadillo ~]# umount /mnt

図8.30 ストレージのアンマウント


8.10.2. ストレージのパーティション変更とフォーマット

ここでは、SDカードを例にストレージのパーティション変更とフォーマット方法を説明します。

パーティション構成を変更するには、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのプライマリパーティションで構成されている SD カードのパーティションを、2 つに分割する例を図8.31「ストレージのパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを2つ作成しています。先頭のパーティションには 100MByte、二つめのパーティションに残りの容量を割り当てています。

[armadillo ~]# fdisk /dev/mmcblk1  1
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): d  2
Selected partition 1

Command (m for help): n  3
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-7182, default 1):   4
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-7182, default 7182): +100M  5

Command (m for help): n  6
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (373-7182, default 373):   7
Using default value 373
Last cylinder, +cylinders or +size{K,M,G} (373-7182, default 7182):   8
Using default value 7182

Command (m for help): w  9
The partition table has been altered!

Calling ioctl() to re-read partition tab mmcblk1:le.
 p1 p2
Syncing disks.

1

SDカードのパーティションテーブル操作を開始します。複数のSDカードを接続している場合は、SDカードのデバイスファイルがmmcblk2など本実行例と異なる場合があります。

2

既存のパーティションを削除します。

3

新しくプライマリパーティション1を作成します。

4

開始シリンダにはデフォルト値(先頭シリンダ)を使用するので、そのまま改行を入力してください。

5

最終シリンダは、100MByte分を指定します。

6

新しくプライマリパーティション2を作成します。

7

開始シリンダにはデフォルト値(プライマリパーティション1直後のシリンダ)を使用するので、そのまま改行を入力してください。

8

最終シリンダにはデフォルト値(末尾シリンダ)を使用するので、そのまま改行を入力してください。

9

変更をSDカードに書き込みます。

図8.31 ストレージのパーティション変更


SDカードの先頭のパーティションを EXT3 ファイルシステムでフォーマットするには、次のようにコマンドを実行します。

[armadillo ~]# mkfs.ext3 /dev/mmcblk1p1

図8.32 ストレージのフォーマット


[ティップ]

EXT2 ファイルシステムでフォーマットするにはmkfs.ext2コマンドを、FAT32 ファイルシステムでフォーマットするには、dosfstoolsパッケージに含まれるmkfs.vfatコマンドを使用します。使用方法については、それぞれのマニュアルページを参照してください。

8.11. LEDバックライト

LEDバックライトの輝度を変更する方法について記載します。Armadillo-800 EVAの LEDバックライト機能は、バックライトクラスとして実装されています。LEDバックライトの輝度変更には、/sys/class/backlight/pwm-backlight.0/ディレクトリ以下の表8.8「輝度設定に使用するファイル」に示すファイルを使用します。

表8.8 輝度設定に使用するファイル

ファイル説明
brightness0(消灯) 〜 max_brightness(最高輝度)までの数値を書き込むことで輝度を変更します。
max_brightnessbrightnessに書きこむ数値の最大値(最高輝度)が読み出せます。

LEDバックライトの輝度を変更する手順を図8.33「LEDバックライトの輝度を変更」に示します。

[armadillo ~]# cd /sys/class/backlight/pwm-backlight.0/
[armadillo ~]# cat max_brightness  1
255  2
[armadillo ~]# echo 0 > brightness 3
[armadillo ~]# cat max_brightness > brightness 4

1

輝度の最大値を表示します。

2

brightnessに設定可能な数値が 0 〜 255 であることが確認できます。

3

消灯させます。

4

最大輝度で点灯させます。

図8.33 LEDバックライトの輝度を変更


[ティップ]

/sys/class/backlight/pwm-backlight.0/以下の他のファイルの使用方法については、Linuxカーネルソースファイルに含まれるDocumentation/ABI/stable/sysfs-class-backlightを参照してください。

8.12. LED

LEDを制御する方法について記載します。Armadillo-800 EVAのLED は、LED クラスとして実装されています。LEDの制御は、LEDクラスディレクトリ以下のファイルを使用します。制御可能なLEDとLEDクラスディレクトリの対応を表8.9「LEDとLEDクラスディレクトリの対応」に示します。

表8.9 LEDとLEDクラスディレクトリの対応

LEDLEDクラスディレクトリ
LED3/sys/class/leds/LED3/
LED4/sys/class/leds/LED4/
LED5/sys/class/leds/LED5/
LED6/sys/class/leds/LED6/

8.12.1. LEDを点灯/消灯する

LEDを 点灯/消灯 する方法について記載します。LEDを 点灯/消灯 させるには、LEDクラスディレクトリ以下のbrightnessに数値を書き込みます。

brightnessに 0 を書き込むと消灯し、1を書き込むと点灯[6]します。

LED3 を例に、点灯/消灯 および状態取得を行う手順を以下に示します。

[armadillo ~]# echo 1 > /sys/class/leds/LED3/brightness

図8.34 LED3を点灯させる


[armadillo ~]# echo 0 > /sys/class/leds/LED3/brightness

図8.35 LED3を消灯させる


[armadillo ~]# cat /sys/class/leds/LED3/brightness
0

図8.36 LED3の状態を表示する


8.12.2. LEDトリガを使用する

LEDトリガを使用する方法について記載します。LEDクラスディレクトリ以下のtriggerに設定したトリガで、LEDを点灯/消灯させることができます。triggerに設定可能なトリガを以下に示します。

表8.10 triggerに設定可能なトリガ

トリガ説明
noneトリガを設定しません(デフォルト)。
battery-charging-or-fullダミーのトリガです。常に消灯します。
battery-chargingダミーのトリガです。常に消灯します。
battery-fullダミーのトリガです。常に消灯します。
usb-onlineダミーのトリガです。常に消灯します。
ac-onlineダミーのトリガです。常に消灯します。
mmc0eMMCのアクセスランプにします。
mmc1SD1のアクセスランプにします。
mmc2SD2またはAWL13モジュールのアクセスランプにします。
timer任意のタイミングで点灯/消灯を行います。この設定にすることにより、LED クラスディレクトリ以下に delay_on, delay_off ファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。

LED3 を例に、トリガの設定および状態取得を行う手順を以下に示します。

[armadillo ~]# echo timer > /sys/class/leds/LED3/trigger
[armadillo ~]# echo 1000 > /sys/class/leds/LED3/delay_on
[armadillo ~]# echo 500 > /sys/class/leds/LED3/delay_off

図8.37 LED3のトリガにtimerを設定する


[armadillo ~]# cat /sys/class/leds/LED3/trigger
none battery-charging-or-full battery-charging battery-full usb-online ac-online mmc0 mmc1 mmc2 [timer]

図8.38 LED3のトリガ表示する


8.13. ユーザースイッチ

ユーザースイッチのイベントを取得する方法について記載します。Armadillo-800 EVAのユーザースイッチはインプットデバイスとして実装されています。ユーザースイッチとして使用可能なスイッチと、インプットデバイスファイルの対応を表8.11「スイッチとインプットデバイスファイルの対応」に示します。

表8.11 スイッチとインプットデバイスファイルの対応

ユーザースイッチインプットデバイスファイルイベントコード
SW3/dev/input/event0116 (Power)
SW4158 (Back)
SW5139 (Menu)
SW6102 (Home)

[注記]

SW3 は、linux-2.6.35-a800eva-at1 では 28 (Enter) に割り当てられていました。linux-2.6.35-a800eva-at2 から、116 (Power)に変更されています。

[警告]

SW2 はリセットスイッチです。ユーザースイッチとしての使用はできません。誤って押下した場合は、Armadillo-800 EVA がリセットされてしまいますのでご注意ください。

[警告]

イベントデバイスファイルの番号は、検出された順番に割り振られます。そのため、USB キーボードなど他のインプットデバイスが起動時に検出されると、デバイス番号は変わる可能性があります。

イベントを取得するには、evtestを使用します。evtest のインストールには APTを使用します。APTの使用方法については、「パッケージ管理」を参照してください。

APTを使用してevtestをインストールするには、次のようにコマンドを実行します。

[armadillo ~]# apt-get install evtest

図8.39 evtestのインストール


ユーザースイッチのイベントを取得するには、次のようにコマンドを実行します。アプリケーションを停止するには、Ctrl+c を押下してください。

[armadillo ~]# evtest /dev/input/event0
Input driver version is 1.0.0
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 28 (Enter)
    Event code 102 (Home)
    Event code 139 (Menu)
    Event code 158 (Back)
Testing ... (interrupt to exit)
    :
    : (イベントを表示)
    :
^C
[armadillo ~]# 

図8.40 ユーザースイッチのイベントを取得


8.14. タッチパネル

タッチパネルのイベントを取得する方法について記載します。Armadillo-800 EVAのタッチパネルはインプットデバイスとして実装されています。タッチパネルに対応するインプットデバイスファイルは、/dev/input/event1です。

[警告]

イベントデバイスファイルの番号は、検出された順番に割り振られます。そのため、USB キーボードなど他のインプットデバイスが起動時に検出されると、デバイス番号は変わる可能性があります。

イベントの取得にはevtestを使用します。インストールされていない場合は、図8.39「evtestのインストール」を参照してインストールしてください。

タッチパネルのイベントを取得するには、次のようにコマンドを実行します。アプリケーションを停止するには、Ctrl+c を押下してください。

[armadillo ~]# evtest /dev/input/event1
Input driver version is 1.0.0
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "st1232-touchscreen"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
  Event type 3 (Absolute)
    Event code 48 (?)
      Value      0
      Min        0
      Max      255
    Event code 53 (?)
      Value      0
      Min        0
      Max      799
    Event code 54 (?)
      Value      0
      Min        0
      Max      479
Testing ... (interrupt to exit)
    :
    : (イベントを表示)
    :
^C
[armadillo ~]# 

図8.41 タッチパネルのイベントを取得




[3] 標準でインストールされています。

[4] フォーマットは、MMDDhhmm[[CC]YY][.ss]です。詳しくは、dateのマニュアルページを参照してください。

[5] /etc/apt/sources.listで設定しています。記述ルールなどについては、sources.list のマニュアルページを参照してください。

[6] Armadillo-800 EVA の LED には輝度制御の機能がないため、1より大きい数値も点灯動作になります。