【Ubuntu】携帯電話と戯れる【NTT docomo SH-02C】

Ubuntu は外人が主力開発なので、mobile phone に関してはNTT docomoの携帯電話は接続しても認識してくれない。

応用開発というところがFOMA用のドライバを作っていて、cdc-acm(FOMA対応)を落っことして来て、ゴリゴリやるもソースが古くてコンパイルに通らない。

そこで、linux-source のパッケージをインストールして展開し、その中から、cdc-acm.c と cdc-acm.h を抜きだし、FOMA用のソースとマージしてゴリゴリやったら通った。

SH-02Cを通信モードにし、USBケーブルで接続して、シリアル通信ソフトで、 /dev/ttyACM0 に115200、パリティなし、8ビット、ストップビット1、フローコントロールXon/Xoffで接続してみると…

と、ちゃんと接続できているようではある。
ATDで発呼すると電話掛けるので、pppdで使う上では問題無く使えそうだ。

しかし、ネットワーク設定のモバイルブロードバンド設定で設定しても、

May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) opening serial port…
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (disabled -> enabling)
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (enabling -> disabled)
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) closing serial port…
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) serial port closed
May 5 15:10:09 purplecat NetworkManager[843]: failed to enable/disable modem: (32) Failed to find a usable modem character set

と、moperaに接続できない。
電話掛けてる感じも無いし、根本的なところでダメな感じがするなあ。

しかたがないので、pppconfig で mopera の設定作って、pon ってやってみたらちゃんと繋がり、Webブラウジングできた。これでLinuxでのモバイル通信はOKじゃ。

一応、まぜまぜしたソースを貼っておこう
cdc-acm.c
cdc-acm.h

これを、応用開発さんのドライバのファイルと置き換え、カーネルヘッダをインストールしてあれば、make で cdc-acm.ko ができるので、それを /lib/modules/uname -r/kernel/drivers/usb/class へコピーすればOK。

参考までにウチの環境は次の通り。
noizumi@purplecat:/etc/ppp$ uname -a
Linux purplecat 2.6.38-8-generic-pae #42-Ubuntu SMP Mon Apr 11 05:17:09 UTC 2011 i686 i686 i386 GNU/Linux

コピーする前に元からあるcdc-acm.koのオリジナルファイルはバックアップを取っておいた方が良いです。

Ubuntu 11.04

Ubuntu 10.10 で、Firefox4 がCPU1個のプロセス100%で食い潰し、ブラックアウトするという現象に悩まされていたので、11.04へ飛びついた。

一度10.10からアップグレードしたが現象変わらず、クリーンインストールしてみたが、~/.mozilla のフォルダを復元すると、やっぱり同じ症状が出る。どうやら、extensionかプラグインに不都合があった模様。

詳しくは調べていないが、greecemonkey、firebug、moonlightなどの拡張の内、greecemonkeyは大丈夫なので、moonlightがあやしいかな?

クリーンインストールした時に既定のままインストールしたので、/dev/sda にGrub 起動メニューがインストールされてしまった。また、Windows7のシグナチャを破壊するのか?と思ったが、問題無く両方起動した。

これで、USB 8GBのメモリで起動切替しなくて済む。

プリインストールのWindows7 Home Editionは殆ど使っていないので、別にクリーンインストールでハードディスク全域をUbuntuにしても良かった。

しかし、BIOSやファームウエアの更新は腐れゲイツOSでないとできない場合が多いので、最低限のWindows起動環境は残しておかないといけない。困ったもんだ。

アプリケーションのメニューがウインドウではなく、上のバーに出るようになって、にユーザーインターフェースが Mac の様になった。

あと、ATIのドライバが新しくなって、Catalyst Control Center で「ティア フリー」という設定により、垂直同期待機がようやくまともに動くようになった事がうれしい。

今まで、動画再生すると、垂直同期無視で描画していたので、チラつきが非常に気になっていたのだが、それが無くなったので、素晴らしい。

VirtualBox で仮想マシンを動かして、ワークスペースに Windows7debian squeeze のウインドウを置いて、それぞれフルスクリーンにすると、こんな感じで、ワークスペース1つが仮想マシンみたいな使い方もできる。

まあ、これはconpizで既に実現していた機能で、Ubuntu はワークスペース切替をconpizでやるようにしたので、できて当たり前と言えば当たり前。

まだ、日本語で検索ができないとか完成していない部分もあるので、普通に使いたい人は、日本語Remix CDが出るまでは手を出さない方が無難。

※やけにUbuntu の日本語サイトが重いと思ったら、もう日本語Remix CDが出てたんだな。

ユーザ登録プログラム

ユーザ登録プログラムがうまく動かないので調べたが、Ubuntuのuseraddはホームディレクトリを作成しないので、そのせいでログイン失敗するようだ。

と、-m オプションを使うとうまくいった。

php crypt

アカウントを自動で作るスクリプトで

$pwd = crypt(“password”);
system(“useradd -p “.escapeshellarg($pwd).” account”);

これで Ubuntu 10.10 はログインできないんだが訳が分からん…

OpenRDサーバ稼働

Debian6のARM版で、UVCビデオカメラが繋いだだけで動いたり、ZoneMinderがパッケージで用意されていて簡単にインストールできたりと、x86版と何ら使い勝手が変わらず、連休を利用して格闘する事を想定していたのが、あっさり終わってしまって拍子抜けだ。

結局、OpenRD Ultimate に Debian6 ARM版のパッケージを使って次の環境を整えた。

・監視カメラ画像記録
・ファイルサーバ
・VPN接続
・Web Proxy
・IRCサーバ

これで今までLet’s note CF-W2のUbuntu 10.10のサーバでやっていた機能を完全に代替する事ができた。ハードディスクがハードウエアRAID1になったのと容量アップしたから、信頼性は多少上がったかもしれない。

Marvell Sheeva 1.2GHzのパフォーマンスはLet’s note CF-W2のIntel Pentium M 1.1GHzと余り変わらない感じ。

これで何が便利なのかとかは後々紹介しようと思う。
# いらないって? (^^;

【OpenRD Debian6】Zoneminderインストール

とりあえず、USBカメラをOprnRDにサクッと挿してみる。

Mar 21 02:13:10 silverfox kernel: [ 5419.372911] usb 1-1.1.2.1: New USB device found, idVendor=0ac8, idProduct=3420
Mar 21 02:13:10 silverfox kernel: [ 5419.380176] usb 1-1.1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 21 02:13:10 silverfox kernel: [ 5419.387885] usb 1-1.1.2.1: Product: Venus USB2.0 Camera
Mar 21 02:13:10 silverfox kernel: [ 5419.393168] usb 1-1.1.2.1: Manufacturer: Vimicro Corp.
Mar 21 02:13:10 silverfox kernel: [ 5419.400835] usb 1-1.1.2.1: configuration #1 chosen from 1 choice
Mar 21 02:13:10 silverfox kernel: [ 5419.522914] Linux video capture interface: v2.00
Mar 21 02:13:10 silverfox kernel: [ 5419.588143] uvcvideo: Found UVC 1.00 device Venus USB2.0 Camera (0ac8:3420)
Mar 21 02:13:10 silverfox kernel: [ 5419.604133] input: Venus USB2.0 Camera as /devices/platform/orion-ehci.0/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2.1/1-1.1.2.1:1.0/input/input0
Mar 21 02:13:10 silverfox kernel: [ 5419.617889] usbcore: registered new interface driver uvcvideo
Mar 21 02:13:10 silverfox kernel: [ 5419.639815] USB Video Class driver (v0.1.0)
Mar 21 02:13:11 silverfox kernel: [ 5420.784731] usbcore: registered new interface driver snd-usb-audio

挿しただけで認識。
ビデオデバイスのみならず、カメラ内蔵マイクロフォンも使えるようだ。

ZoneMinderをサクッと入れてみる。

root@silverfox:~# aptitude install zoneminder
The following NEW packages will be installed:
apache2{a} apache2-mpm-prefork{ab} apache2-mpm-worker{ab} apache2-utils{a}

さすがに何も入れてないから、apache2とかmysqldとか連鎖インストールするものが多いな。勿論Yと答えて暫し待つ。

終わったら、ZoneMinderのWebインターフェースの初期設定。

root@silverfox:~# ln -sf /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
root@silverfox:~# adduser www-data video
Adding user www-data' to group video’ …
Adding user www-data to group video
Done.

グループ設定を有効にする為に再起動
root@silverfox:~# reboot

ブラウザで
http://192.168.11.8/zm/
とZoneMinderのWebインターフェースを開いてモニタ追加。
設定はこれと同じ。

で、あっさり動いた。しかし、メモリが少ないせいかWebの応答が遅いな…。
後はどの程度のパフォーマンスが出るのかを検証。

marvellの sheeva 1.2GHz は大体、今サーバにしているLet’s note CF-W2のIntel Pentium M 1.1GHzと同じ位ではないかと推測しているが、ZoneMinderをmodect状態にして放置してみる。

【OpenRD】Debian 6 インストール

今までARMとは何ぞや?ARM CPUにサックリ入るLinuxは?などと情報収集をしていたが、Debian 6 squeezeを入れる事にした。

ARMというCPUはlegacy ABIとEABIとかいうのがあるらしく、OpenRDはEABIで、armelというやつがそれらしい。未だに違いが良く分からないがバイナリのエンディアンの違いかな?

Debian installer for OpenRD という、英文だが非常にシンプルかつ簡単なインストールガイドがあったので、この通りにやる事にした。

中身を読むと、Debian インストーラは NAND flash へ書き込む事はできないので、USBメモリかSATA HDDへのインストールになるとか。

Corega のRAID HDDハードディスクケースを活用して、ファイルサーバ兼 Zoneminder監視カメラ画像記録サーバ兼家庭LANゲートウエイ兼IRCサーバを構築するつもりだったので、書き込む毎に劣化していくNAND flashを使わないのはむしろ有難いくらい。

まずは、やった事のメモ。

FATかext2またはext3でフォーマットしたUSBメモリにインストーライメージを配置して読み込ませる方法と、TFTPでインストーライメージを読み込ませる方法と2通り紹介されている。

わしは空いているUSBメモリが無いのでtftpでやる事にし、
sudo aptitude tftp-hpa tftpd-hpa

と入れて、

とやって、uImageとuInitrdを配置。

OpenRDを起動して、キー押してboot途中で止める。
OpenRD Ultimateなので次を実行。

次は、SATA HDDなので、

この時に、ちゃんとファイルが読めていると、#マークが多数表示される。
T T T…とか表示されていると、tftpdのファイルが正しく読めていない。

そしてインストーラ起動。

SATAインターフェースに繋いであるハードディスクが起動時に認識され、ハードディスクパーティションを適当に握ってくれるので、既定のままGO!GO!

途中色々聞かれるけど、適当に答え、インストールするのは、sshサーバだけ選んでインストール完了。

再起動後、再びキーを押してbootを止め
setenv bootargs_console console=ttyS0,115200
setenv bootcmd_sata ‘ide reset; ext2load ide 0:1 0x01100000 /uInitrd; ext2load ide 0:1 0x00800000 /uImage’
setenv bootcmd ‘setenv bootargs $(bootargs_console); run bootcmd_sata; bootm 0x00800000 0x01100000’
saveenv

と設定して

で起動!…

せぬわ!

Bad Magic Numberとか言われて怒られる。どうもパーティション指定が違っているようなのだが、どうやれば正しくなるのかさっぱり分からん。

で、困った時のOpenRDフォーラム頼り。
さすが Debian squeeze 出たばっかりだから、ヒトバシラーがおるわおるわw
これを参考にすると、ide reset とか ext2ls とか新たな技を覚えた。

Marvell>> ide reset

Reset IDE:
Marvell Serial ATA Adapter
Integrated Sata device found
[0 1 0]: Enable DMA mode
Device 1 @ 0 1:
Model: WDC WD5000AAKS-00A7B2                    Firm: 01.03B01 Ser#:      WD-WMASZ0170852
Type: Hard Disk
Supports 48-bit addressing
Capacity: 476940.0 MB = 465.7 GB (976773152 x 512)

これを見ると、ide 1:1 と指定するのが正しいようだ。
なるほど、内部のSATAが0で外部のeSATAソケットが1になる訳だな。

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_sata ‘ide reset; ext2load ide 1:1 0x01100000 /uInitrd; ext2load ide 1:1 0x00800000 /uImage’
setenv bootcmd ‘setenv bootargs $(bootargs_console); run bootcmd_sata; bootm 0x00800000 0x01100000’

そして

無事起動。
とりあえず、今日はここまでで、後でV4Lとかzoneminderインストールとかやろう。

Dell Studio 1558 のUbuntu 10.10へのアップグレード受難

Let’s note CF-W2 や VirtualBox 4.0.4 における Ubuntu 10.04 で拍子抜けする位にあっさり10.10へのアップグレードができたので、Dell Studio 1558にインストールしているUbuntu 10.04 をそんなに深く考えずアップグレードした。

手順は、アップデートマネージャの設定でアップグレードリリースを「長期サポート版(LTS)のみ」から「通常のリリース」に変更。

再チェックして、アップデートモジュールが無い事を確認してから、「10.10へアップグレードできます」ってのをポチっとやり、後はsamba、dovecotの設定ファイルを保持で、alsaは置き換え。

再起動させたら

ときたもんだ。
こりゃまいったね。まさか起動不能になるとは微塵も思って無かった。

ls (hd1,5) とかやっても Bad Filename とか言われてダメな雰囲気がありありと出ている。
で、Let’s note CF-W2 でfirefox起動してGoogle 先生にお伺い。

こんなん出ました。
という事で、10.10 LiveCDを作る為にISOイメージをダウンロード。Let’s note CF-W2のUbuntu 10.10でイメージを焼こうとするも失敗して焼けず、2枚のCD-Rをダメにした。
まあ、生CD-Rの空きが16MBという表示がでていたので、焼けない感がもーりもりだったが…。

仕方がないので、Dell Studio 1558のLinux起動用USBメモリをぶっこ抜いてWindows7を起動。
こちらでは無事焼けたので、このLiveCDでUbuntu 10.10を起動。

アプリケーション>アクセサリ>端末 でターミナルソフト起動。

sudo fdisk -l

という構成で、Grub が Windows7のシグネチャを破壊しないようにブートローダはUSBメモリに入れてある。

sudo mount /dev/sda5 /mnt
sudo mount –bind /dev /mnt/dev
sudo mount –bind /proc /mnt/proc
sudo mount –bind /sys /mnt/sys
sudo chroot /mnt
apt-get install grub-pc
とやったら既に入ってると言われたので、インストールはしていない。

grub-mkconfig -o /boot/grub/grub.cfg
grub-install /dev/sdb

No error だったので、LiveCDを終了して再起動。
そしてGrubの起動メニューが出て、無事に起動するようになった。

しかし、それだけでは終わらなかった。
ログイン画面になり、アカウントをクリックした途端、画面が暗転し、またログイン画面が出て、暗転というのを数回繰り返すという現象が発生。

画面の右下の電源アイコンクリックしても暗転してログイン画面を繰り返すので、ログイン画面が安定したところで電源ボタンを押す。するとシャットダウンメニューが出るので再起動を実行。

思い当たる事は、Dell Studio 1558はMobility RADEON HD5470で、プロプラエタリドライバを使っており、ビデオドライバのアップグレードに失敗しているのだろう。

Grubのメニューでrecovery modeのカーネルを起動。またもや日本語が文字化けしたメニューからXほげほげってのを選び、低解像度モードでXを起動。

Synaptic パッケージマネージャを起動して、設定のリポジトリを見る。他のソフトウエアのタブでmaverickへのアップグレード時に無効化されました(http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu)なんてのがあるので、

http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu
http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu main
http://ppa.launchpad.net/ubuntu-x-swat/x-updates/ubuntu main (ソースコード)

の3つにチェックを入れる。
そして、fglrxで検索し、
fglrx fglrx-amdcccle fglrx-modaliases xserver-xorg-video-radeon

の4つをアップグレード指定して適用をポチっとな。
再起動して通常起動したら、やっとまともに起動した。

Linuxの維持管理は機種によって難易度が全然違うなあ。

ナビスタジオをVirtualBoxのGuestOS Windows7 Professional 64bit で動かす

10日夜にamazonで買って、11日発送のままどうなってたか分からなかったWindows7 が今日到着し、早速仮想マシン化

Pioneerのサイバーナビ AVIC-ZH9000のリビングキットでナビスタジオを使う目的で買ったのだが、よく考えたら、前にVirtualBox3.2に入ってるWindows7でテストしてダメだった気がするぞ…。

単にUSBのデバイスIDをGuest OSに渡すだけだから何で失敗したのかよく分からんが、とくかく前進、前進、前進進♪

VirtualBox 4.0.4 Linux Hosts でUbuntu 10.04用をダウンロードしてインストール。
# Dell Studio 1558もUbuntu 10.10にアップグレードするかな

システム>システム管理>ユーザとグループで詳細ボタン押してパスワード入れる。

「VirtualBox仮想マシンの使用」にチェックを入れてOKボタンを押す。

PC再起動して、これでUSBデバイスをGuest OSに渡せるようになる。

リビングキットをPCのUSBに接続すると、一応LinuxではUSBディスクとして扱われるが一部のみ。

Windowsみたいに複数ドライブには見えないようだ。

そして、VirtualBoxの設定で、USBに不明なデバイス 08E4:0145[0100]を追加し、「USB 2.0(EHCI)コントローラを有効化」にチェックを入れる。

で、GuestOSでナビスタジオをナビ付属CDからゴリゴリインストール。こいつはWindows7対応じゃないけど、Windows7対応版にアップデートするには、まず付属CDの奴を入れないといけない。

そしてPioneerのページからWindows7対応版をダウンロードしてアップデートする。BeatJamもBeatJam Video Converterもアップデートしないと音楽やビデオが転送できない。

ナビスタジオ起動させてみるも、やっぱり認識しない…。
仕方ないのでシャットダウンすると、凄く遅くなっていつまでもシャットダウンしない。

一時停止して、状態を保存して、リビングキット外して再開したら軽くなるかな?
などとやったら起動せぬ(汗)。

「USB2.0動かすにはExtention Pack使いやがれ」とVirtualBox様が言われるので、ダウンロードしてダブルクリックしたら、VirtualBoxがインストールしてくれた。

それでも起動不能で再開できないから、「破棄」して起動。
すると、ナビスタジオが起動!Extention Pack恐るべし!

ちゃんとBrain Unitの接続マークが出てるし、ナビに蓄積したデータも送信している。

ドライブマネージャで渋滞情報、ウェザーライブも問題なし。
BeatJam Video Converterがクラッシュするけど、リアルWindows7でもクラッシュしてて、何とか解決したんだが、どうやるんだっけな…まあ、後でいいや(苦笑)

# BeatJam Video Converterのプロパティの互換性タブで「Windows 98 / Windows Me」にするんだった。

これで一々Linux終了して、Windows起動しなくて済むな。

Let’s note CF-W2 Ubuntu10.10 grub-pc設定

Synaptic パッケージマネージャで grub-pc を選択すると、grub(legacy version)が削除され、新しいgrub version 2になる。

Windows 7を使用しているパソコンでセレクタブルブートにする場合は危険だが、わしの場合は、USB接続したハードディスクでブートしているので、問題が起これば取り外せばOK。

menu.lst 経由で起動(チェーンロード)しますか?

なんて聞いてくるが訳がわからんので「ヘルプ」のボタンを押すと、旧設定を利用してGRUB2を起動するとの事で、トラブル回避にはお勧めらしい。
で、うまく動いているようなら、

# upgrade-from-grub-legacy

とやれば完全移行できるそうな。
grub2で便利なのは、USBブートに設定してても、内蔵HDDのWindowsをメニューに設定できて起動できる事。

今まで、USBメモリや、USBのHDDを引っこ抜いてWindowsを起動していたのが引っこ抜かなくても良くなるのだ。