問題タブ [udev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - デフォルトの Udev ルール
独自の udev ルール セットを定義していない場合、デフォルトの udev ルールとは何か、またそれらを知るにはどうすればよいでしょうか。動的に登録されたキャラクタードライバーのコンテキストでこの質問を検討してください。
ありがとう
c - SDカードイベントの通知を受け取る方法は?
SDカードの有無を確認し、SDカードの追加/削除の通知を受け取りたい。
これまで使用libudev
してきましたが、SDカードのイベントをリッスンする小さなアプリケーションを作成しました。
コードは以下のとおりです。
このコードは、SDカードの追加/削除(およびSDの初期状態-プラグ/アンプラグ)の通知を受け取ります。ただし、これはハックのようなものであり、すべての場合に機能するわけではありません。
私は現在ID_MODEL
、デバイスの属性を使用して、それがSD_MMC
SDカードの場合かどうかを確認しています。今のところ必要なのはこのタイプのカードだけなので、それで十分です。
SDカードが挿入されると、サブシステムブロックに対して次のイベントが送信されます。2つchange
のイベント、およびadd
各パーティションに1つのイベント。イベントのプロパティは次のとおりです。
イベントからchange
、デバイスが追加されたか削除されたかに関する情報を抽出できません。デバイス名を開こうとしました\dev\sdd
が、権限がないため、オプションが該当します...
今のところ、パーティション(add
/ remove
)のアクション属性をチェックしているだけです。
このバージョンのプログラムは、パーティションのあるSDカードで非常にうまく機能します。パーティションがない場合は、change
イベントのみが受信されます。
だから私の質問はchange
:メディアがイベントに追加/削除されたかどうかを確認する方法はありますか?または、デバイスが使用可能かどうかを確認する他の方法はありますか(パーティションの問題を念頭に置いて)?
デバイス属性の反復または通知の取得方法を改善するための提案を歓迎します。
PSそして私は使用できませんlibusb
:)。
linux - sda1-xではなく、sdaに接続するときにudevでスクリプトをトリガーする方法
USB ドライブを組み込みシステムに接続するときに、スクリプトを実行する必要があります。私の考えは:
任意の USB スティックで実行する必要があるため、ベンダー固有のパラメーターを使用できません。これで、スクリプトは sd[a..][ ,1..] で実行されますが、sd[a..] が 接続した場合 (NULLの場合は _) のみ実行する必要があります。とともに ?切断すると機能しますが、接続すると、パーティションごとに実行されますシェルスクリプトでこれを解析する可能性はありますか?
誰かがここで私を助けてくれたらいいのに。(誰かが私が質問を削除したのを見た場合: 申し訳ありませんが、? が最終的な解決策だと思いました。しかし、どちらも機能しませんでした)。
udevadm info --attribute-walk -name /dev/sda1 の出力は次のとおりです。
linux - USB ドライブが接続されている場合、udev を使用してコンソールにメッセージが表示されます
udev ルールを使用して、デバイスの追加や削除などのメッセージをターゲットのコンソールに送信することはできますか?
linux - USBデバイスが接続されているときに何かを実行しても機能しない
/etc/udev/rules.d/local.rulesにスクリプトを作成しました
次に、udevをリロードします
サブシステム以外のすべてを削除して実行しようとしました。'+='の代わりに'='を実行してみましたが、SYSFSの代わりにATTRに疲れました。「sudoserviceudevrestart」と「sudoreloadudev」を試してみました。デバイスのプラグを抜いてから再度差し込むと、アクションが実行されません。名前を70-local.rulesに変更し、権限をa+xに変更してみました。「サブシステム」を「バス」に変更してみました。同じコマンドを持つ「/path/test.sh」にrunを設定してみました。
linux-kernel - Linux USB エニュメレーションと uevent
http://www.technovelty.org/code/linux/plugging-in-usb.htmlで記事を読みました。とても良いです。
接続されたデバイスの列挙がホストによって正確に行われる関数と、uevent が送信される関数はどれですか?
usb_new_device などの関数に printks を導入しました。「udevadm monitor --kernel」を使用すると、hub.c の usb_new_device で呼び出される列挙関数の前でもカーネル イベントが表示されますか?
ログが続きます
[ 110.819399] 123456 ハブ_irq
[ 110.824952] 123456 ハブ_ポート_接続_変更
[ 110.979624] 123456 ハブ_ポート_初期化
[ 111.059625] usb 2-1.2: fsl-ehci とアドレス 3 を使用する新しい高速 USB デバイス
[ 111.189722] 123456 usb_new_device
[ 111.196219] usb 2-1.2: 新しい USB デバイスが見つかりました、idVendor=05ac、idProduct=12a0
[ 111.203113] usb 2-1.2: 新しい USB デバイス文字列: Mfr=1、Product=2、SerialNumber=3
[ 111.210438] usb 2-1.2: 製品: iPhone
[ 111.214196] usb 2-1.2: メーカー: Apple Inc.
[ 111.218728] usb 2-1.2: シリアル番号: 9356b662a93170509226069e5adf53f2351d774e
KERNEL[110.940183] /devices/platform/fsl-ehci.1/usb2/2-1/2-1.2 (usb) を追加
タイムスタンプを確認しますが、udevadm の出力は最後にありますが (udevadm はユーザー空間で実行されます)、usb_new_device が [111.189722] で呼び出された [110.940183] で実際にイベントを取得しました。
android - HTC3DをADBに接続する
私はAndroidHTC3D電話をラップトップに接続しようとしていますが、かなり長い間この問題に取り組んできました。私はいくつかの調査を行い、stackoverflowをスキャンしましたが、問題を解決するものは何もありません。これまでのところ、http: //developer.android.com/tools/device.htmlのチュートリアルに従っていますが、何の役にも立たず、実行する./adb devices
と空のリストが表示されます。その後、検索を開始し、Ubuntu10.04でこのstackoverflowQ&A HTC Desire usb接続の問題を見つけました。これにより、名前を70、71、90、99に変更することをお勧めします。 :デバイスでAndroidアプリをデバッグすると、70-android.rulesファイルを自動的に生成するスクリプトが得られました...それでも何もありません。
これまでのところこれは私の設定です:
- OS-Linux Mint 11
- IDE-Eclipse
- 電話:HTC 3D
- 電話モデル番号:PG86100
- 電話はを介してデバッグモードに設定されています
Settings->Developer Options->USB Debugging
ルールファイル:
#エイサー
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0502"、MODE = "0666"
#デル
SUBSYSTEM == "usb"、SYSFS {idVendor} == "413c"、MODE = "0666"
#フォックスコン
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0489"、MODE = "0666"
#Garmin-Asus
SUBSYSTEM == "usb"、SYSFS {idVendor} == "091E"、MODE = "0666"
# グーグル
SUBSYSTEM == "usb"、SYSFS {idVendor} == "18d1"、MODE = "0666"
#HTC
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0bb4"、MODE = "0666"
#Huawei
SUBSYSTEM == "usb"、SYSFS {idVendor} == "12d1"、MODE = "0666"
#京セラ
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0482"、MODE = "0666"
#LG
SUBSYSTEM == "usb"、SYSFS {idVendor} == "1004"、MODE = "0666"
#モトローラ
SUBSYSTEM == "usb"、SYSFS {idVendor} == "22b8"、MODE = "0666"
#Nvidia
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0955"、MODE = "0666"
#パンテック
SUBSYSTEM == "usb"、SYSFS {idVendor} == "10A9"、MODE = "0666"
#Samsung
SUBSYSTEM == "usb"、SYSFS {idVendor} == "04e8"、MODE = "0666"
#シャープ
SUBSYSTEM == "usb"、SYSFS {idVendor} == "04dd"、MODE = "0666"
#ソニーエリクソン
SUBSYSTEM == "usb"、SYSFS {idVendor} == "0fce"、MODE = "0666"
#ZTE
SUBSYSTEM == "usb"、SYSFS {idVendor} == "19D2"、MODE = "0666"
どんな助けやアドバイスも素晴らしいでしょう。前もって感謝します。
c - libudevは重複したUSBデバイスを返します
Linux(私の場合はUbuntu)のすべてのUSBデバイスを一覧表示するプログラムを作成しています。私はこのチュートリアルhttp://www.signal11.us/oss/udev/に従い、サブシステムを「hidraw」から「usb」に変更しました。
デバイスは正常に一覧表示されますが、重複が含まれています。
私は明らかに私のコードで重複を削除することができますが、重複を返さない方法でデバイスの列挙を設定する方法を知っているかどうか疑問に思いました。
私のコードを確認したい場合(あまり変更していません)、https://github.com/DiogoNeves/LinuxUsbTestにあります。
ありがとう!
linux-device-driver - debian linux で udev を使用して USB モデムを自動的に接続できない
私の Linux ボックス (uname -a Linux gate 3.2.0-0.bpo.2-amd64 #1 SMP Fri Jun 29 20:42:29 UTC 2012 x86_64 GNU/Linux) には USB モデム WeTelecom WM-D300 があります。 「zeroCD」オプションがあります。ZeroCD の USB ID は 22de:6803 で、モデム デバイスの USB ID は 22de:6801 です。そのための usb_modeswitch ルールを作成し、このルールがうまく機能することをテストしました。
そこで、このデバイスの自動ホットプラグを許可する小さな udev 構成を作成しました。
そして、それは機能していません。モデムを再接続すると、完全に使用できなくなります。usb-devices は、usbfs ドライバーがあり、usb_modeswitch はコマンドラインからでも切り替えることができないことを示しています。udev も切り替えに失敗しましたが、再起動後、次の物理的な再接続まで問題なく動作します。モデムを接続したときの udev ログは次のとおりです。
だから、私の質問は:なぜ、どのように?コマンドラインから動作する理由と、udev で動作させる方法を教えてください。助けてください。事前にサンクス!