USB接続の外付け光学ドライブ

4,292 views
Skip to first unread message

Le-gen-d

unread,
Feb 18, 2011, 5:02:42 AM2/18/11
to 日本Androidの会
こんにちは!

たった今、入会させて頂いた者です。

まだ、過去のディスカッションを見れきれていないこともあり、もしかしたら重複するトピックになってしまうかもしれませんが、アンドロイド搭載PCで外
付け光学ドライブの使用は不可という理解でいるのですが、それが正しいのか、また、例えばどこかのメーカがデバイスドライバーや対応アプリケーション
(再生、記録等)をバンドルで出してきた場合に、アンドロイドのOS側は何の対応/変更も必要なく動作してしまうものなのかどうか、少し興味があります
ので、もしお分かりの方がいらっしゃいましたら、コメントを頂戴できると幸いです。

コメントをお待ちしております。

よろしくお願い致します。

鷹見純

unread,
Feb 20, 2011, 8:27:09 AM2/20/11
to android-g...@googlegroups.com

Le-gen-d様


鷹見と申します。

Androidはスマートフォンばかりに注目を浴びていますが,それ以外にもカーナビ,カラオケ端末,居酒屋の注文用のボードなど,意外なところで応用が検討されています。
OSはLinuxを使用しているので,原理的にはLinuxで対応できるものであれば,どのようなデバイスでも対応可能です。
CD, DVDについては,Linuxで対応しておりますので,原理的には対応できます。
ところで,製品化されたAndroid端末は,ユーザはルートモードでログインできないようになっています。
デバイスドライバをインストールするためには,ルート権限でアクセスしなければならないため,製品版のAndroidでは後から新しいデバイスを追加できません。
以下,個人的な意見ですので間違っているかもしれませんが,回答しておきます。

1. Android搭載PCで外部外付光学ドライバの使用
 その端末が,あらかじめ,ドライバを用意してあれば使用できます。
 ドライバがない場合,ユーザはルート権限がないので,ドライバを追加できません。
 また,ドライバを入手しても,ルート権限がないのでインストールできません。

2. どこかのメーカがデバイスドライバーや対応アプリケーション(再生、記録等)をバンドルで出してきた場合
  単独でデバイスドライバを提供されても,ユーザはルート権限をもっていないので,Linuxに登録できません。
 提供したメーカが端末のベンダか,ベンダと契約したサードパーティなら,特別な方法でルート権限を取得するか,Linuxカーネル自体をドライバ付きのカーネルに交換することができますので,この場合,対応可能でしょう。

3. アンドロイドのOS側は何の対応/変更も必要なく動作してしまうものなのか
 「アンドロイドのOS」が何を意味するのか不明ですが,ここでは,Androidフレームワーク(Limixとアプリの間)と勝手に解釈させてしただきます。
 AndoidはLinux上で稼働しますので,Linuxの制限に従います。
 CD, DVDはデバイスですので,この中のファイルにアクセスするためには,Linuxのmount処理を行い,デバイスとディレクトリをひも付けします。
 これにより,特定のディレクトリにあるファイルが,CD,DVD上にあるファイルと対応します。
 たとえば,Windowsなら,DドライブがDVDとなりますが,Linuxの場合,特定のディレクトリがCDやDVDとなり,Linuxなら特定のディレクトリがCD,DVDの内容となります。

 以下は,一般論ですが,
 ① デバイス(こはユーザは自由にアクセスできないようにしている。
  ② したがって,mountして特定ディレクトリとひも付けするのは,Androidフレームワークが行う
 ③ Androidフレームワークがひも付けすることになるので,Androidフレームワークを変更する必要がある。
  ということで,これらの処理のためAndroidを変更する必要があります。

 ただし,①の条件をCD,DVDのアクセスをユーザにアクセス権を与えとおくことで,ユーザがデバイスとディレクトリとをひも付けできるようになり,アプリケーションですべて処理することができるので,Androidフレームワークの変更は不要です。

補足
3GセンサやカメラなどはAndroidで標準化されたいたフェースを用意しなければなりません。
しかし,今のところCD,DVDについては特に規定はありません。
(将来的に,CD,DVDに対する規約が出てくるかもしれませんが,Android自体,クラウド的な考え方を採用しているようで,CD,DVDにあるようなデータをクラウドで扱うようになるかもしれません)

by 鷹見 純

Le-gen-d

unread,
Feb 21, 2011, 6:40:20 AM2/21/11
to 日本Androidの会
鷹見様

丁寧なご回答ありがとうございます。

色々と勉強になりました。

これもまた素人的な考えで申し訳ありませんが、コメントを頂ければ幸いです。。

例えば、拡張機能を 実現す る方法として、既存のLinux資産(例えばDevice Driver)をAndroidのLinux部で動作させる為
のJAVA-Applicationを開発し、AndroidのAplicationと上手 く連 携させるという方法はありますでしょうか?

以上宜しくお願い申し上げます。

Le-gen-d

鷹見純

unread,
Feb 23, 2011, 9:23:49 AM2/23/11
to android-g...@googlegroups.com

Le-gen-d様


申し訳ありません。ここのところほとんど午前様状態で,メール確認できませんでした。
遅くなりましたがコメントです。

制約はありますが,ユーザが何らかの形でデバイスをアクセスできれば,アプリで新しいデバイスを制御することはできます。

デバイスドライバは,ユーザではインストールできないので,ここでは,次のように想定します。

(1) デバイスドライバがインストール済みの場合
一般的に,デバイスのアクセスはユーザに許可されていないことが多く,フレームワークで何らかのアクセスクラスが用意されていないと厳しいでしょう。

(2) デバイスドライバがインストール済みでユーザがアクセスできる
この種のデバイスは,通常のファイルとは異なるので,一般的にjavaでの制御は困難です。
通常JNIを用いてc,c++言語を用いてデバイスを操作し,アプリケーションはこのJNIのモジュールを通しアクセスします。

Androidはデバイスドライバを入れられないことは,大きな制限ですが,その分,セキュリティは向上します。
Android関係の仕事をしておりますが,この部分,歯がゆい部分ではあります。
USBワンセグなど,簡単につなぐことができれば面白いのですが,なんせドライバを入れられないので手が出ません。

個人的には,趣味で評価ボードをいじっています。
これなら,ドライバを自由に入れられルート権限のあるアプリも作れるので,それを制御するアプリを作成することもできます。

なお,デバイスドライバはLinuxのライセンスによる,ほとんどの場合,ソース公開義務が生じます。
そのため,新規なものに対してLinux用のものが出てこない一因かもしれません。
(ものによりますが,デバイスドライバはノウハウのかたまりですので)


鷹見

Le-gen-d

unread,
Feb 23, 2011, 11:18:11 PM2/23/11
to 日本Androidの会
鷹見様、

お忙しい中、ご丁寧に回答を頂きありがとうございました。

大変勉強になりました。

また、勝手ながらご質問させて頂くこともあるかもしれませんが、その時は
何卒宜しくお願い申し上げます。

Le-gen-d

Le-gen-d

unread,
Feb 24, 2011, 1:24:46 AM2/24/11
to 日本Androidの会
鷹見様、

申し訳ありません。もう1件教えて下さい。

既存のAndroid端末(今、購入検討を進めております)にUSBメモリを接続した場合に
データの転送(読み書き)は全く問題なくできるのでしょうか?

Android端末はUSB経由でのデータ転送を抑制しているのか、それとも
光学ドライブに対してのものだけなのかを理解したく質問させて頂いております。

以上宜しくお願い申し上げます。

Le-gen-d

鷹見純

unread,
Feb 26, 2011, 7:58:23 PM2/26/11
to android-g...@googlegroups.com

Le-gen-d様


いろいろ調べてみましたが,今のところAndroid端末にUSBメモリを取り付けるという例はみつかりませんでした。
Androidは標準でSDカードだけをサポートしています。
ということで,USBメモリを取り付けても,データ転送はできません。

Android端末はUSB経由のデータ転送に制限を加えているではなく,ドライバを入れていないだけです。
Androidは電池で駆動する携帯端末を想定しているので,消費電力の大きなDVDはいれていないということかもしれません。

鷹見

Yuichi Muto

unread,
Feb 27, 2011, 10:43:45 PM2/27/11
to android-g...@googlegroups.com
六藤 雄一です。

過去に、USBデバイスをAndroid端末に接続し、コントロール可能か検討したことがあります。

結論から申しますと、
「現行のAndroid端末にて、公式に各種デバイスコントロールをサポートをしている機種はない
可能性が高い」
です。

これは、USBメモリや光学ドライブに限らず。

USB接続には、「ホスト」と「デバイス」という主従関係が成立しなければなりません。
Android端末がUSBメモリや光学ドライブをコントロールするためには、Android端末内に
「USBホストコントローラ」が搭載されており、その機能が有効に作動している必要があります。

(「ホスト」と「デバイス」の識別は、規格上はコネクタ形状で識別できるようになっています。
が、実装上はその通りになっていないことが多々あるようです。)

私が知っている範疇では、Nexus OneにはUSBホストコントローラチップが搭載されている
ようですが、公式にはうたわれていません。
が、世界には、ご自身でドライバ(カーネルもお作りになられていたと思います)を書き、この
USBホストコントローラチップを動作させて、外付けHDDや各種USBデバイスを動かし、
YouTubeに投稿されていたのを見た記憶があります(すみません、URL等、詳細を忘れて
しまいました...)。

この場合も、コネクタ形状が合わないため変換コネクタを自作されたりと、ハード/ソフト共に
大改造をされていました。
(その甲斐あって、超小型PCのように用いることが可能でした。)

そのため、「USBホスト機能」を公式にサポートしているAndroid端末でない限り、USBメモリ
や外付けHDDをコントロールすることは一般的には難しいと思われます。


2011年2月27日9:58 鷹見純 <taka...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
>

--
Yuichi Muto

Le-gen-d

unread,
Mar 2, 2011, 1:20:30 AM3/2/11
to 日本Androidの会
鷹見様、六藤様、

ご丁寧なコメントありがとうございました。

六藤様、

初めまして。Le-gen-dと申します。今後ともよろしくお願い致します。

私はUSBポート搭載のAndroid端末にはホストコントローラチップが搭載されているものだと
思っていましたが、Android端末はUSBのホスト」、「デバイス」の関係で言うと
「デバイス」という位置づけになるものが殆どでありホストコントローラが搭載されていない
可能性が高い、という事ですね。

もしAndroid端末にUSBホスト機能がない場合、ホストコントローラチップをH/W的に
追加する必要があるのでしょうか?

また、ホスト機能がなくても、H/W的には搭載されており、あとはその機能を
動かしてあげる環境を構築してあげればよい、ということも考えられるのでしょうか?

その場合ですが、Android端末側及びデバイス側(USB接続の外付けドライブ)で
どのような環境構築が必要になると推測されますか?

ご存知の範囲で全く問題ありませんので、教えて頂きたく宜しくお願い申し上げます。

Le-gen-d

Yuichi Muto

unread,
Mar 2, 2011, 9:11:24 PM3/2/11
to android-g...@googlegroups.com
Le-gen-d様
 六藤 雄一です。

 私見ですが。

Android端末にUSBホスト機能がない場合、ホストコントローラチップをH/W的に
載せない限り、ホストとしてデバイスをコントロールすることは困難かと思います。
無論、大改造をやって搭載することは技術的にできたとしても、実用的ではない
と思われます。

ホストコントローラチップをH/W的に有している機種の場合、

・隠しコマンドでONできるもの
・デバイスドライバを作成すれば済むもの
・Androidカーネルに手を入れなければならないもの

まで、様々であろうと思います(下に行く方ほど大がかりです)。

また、ホスト-デバイスの主従関係を構築できたとして、デバイ
スをコントロールするためのデバイスドライバやアプリ開発が
必要不可欠になるかと思います。
(汎用的なものは、AndroidOSにてサポートされているかと思い
ますが)

実験用途ならばともかくも。
一般向けに普及させることを考えると、至難の業かと思います。
(利用者に自端末の環境再構築を要求することになるため)

普及を考慮されるならば、USBホスト機能付の端末に絞った方がよいかと
思います。

2011年3月2日15:20 Le-gen-d <gsat...@gmail.com>:

Yuichi Muto

unread,
Mar 2, 2011, 9:15:08 PM3/2/11
to android-g...@googlegroups.com
六藤 雄一です。

Nexus Oneを改造し、ホストコントローラチップをONし、各種デバイスを動作
させた方のページ(及びYouTube)が見つかりました。

http://sven.killig.de/android/N1/2.2/usb_host/


ハード/ソフトを含め、大改造です。

2011年3月3日11:11 Yuichi Muto <glts...@gmail.com>:

--
Yuichi Muto

田代透

unread,
Mar 3, 2011, 5:45:14 AM3/3/11
to android-g...@googlegroups.com
AndroidデバイスのUSBコントローラーがUSB-HOSTMODEをサポートしているか

N: ハードウエアの改造もしくは追加が必要

USBコントローラー向けのデバイスドライバーを作る

外装するデバイス用のデバイスドライバーを作る(ファイルシステムなど)

USBコントローラー用デバイスドライバーと外装するデバイスのデバイスドライバーを組み込んだカスタムROMを作る

AndroidデバイスにカスタムROMを入れる

NDKなりでデバイスドライバーを使用するライブラリーを作り接続・切断などの制御やアクセスできるようにする

Androidアプリで接続・切断の制御やアクセスするものを作る。

こんな感じだと思います。ただ、既存のAndroidデバイスで外装USBデバイスを利用するというのは難しいことと思います。

また、現状のAndroid端末が電話であったりタブレットであったりすることを考えると、USBケーブルで他のデバイスをぶら下げるというのは美しい実装ではないと思います。

中国製のSmart Q5 MIDというデバイスは、他のOSも走ることもありUSBがホストモードも対応しています。
Androidでも設定の変更が可能で、キーボード等は接続できるようです。

2011年3月2日15:20 Le-gen-d <gsat...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
--
Toru Tashiro
toru...@gmail.com

Reply all
Reply to author
Forward
0 new messages