USB cihazının sahte seri numarası


9

Bilgisayarıma USB ile bağlı bir cep telefonum var.

Kullanarak cihaz bilgilerini görüntülerken

sudo udevadm info --attribute-walk

ürün ve satıcı kimlikleri iyi görünüyor, ancak ATTR {serial} yok . Kullandığım bir uygulama (Android adb), düzgün çalışması için bir seri numarasını bildirmek için cihaza ihtiyaç duyuyor.

Örneğin bir udev kuralı kullanarak cihazın seri numarasını taklit edebilmemin herhangi bir yolu var mı?

Açıklama: Soru için nasıl değil almak ama nasıl, USB cihazın seri numarasını ayarlamak seri numarasını.

USB üzerinden seri numarası bildirmeyen bir Android telefonum vardı ve adb aracı bunu çok sevmedi. Şimdiye kadar bunun için basit bir çözüm yok gibi görünüyor. Ancak, orada günler sadece geliştirme için uygun bir Android telefon satın almak çok kolaydır.


Bir android telefon mu? Değilse, adb yine de çalışmaz.
Keith

Ben değilim tahmin aslında udev bu bilgi almak etmediğini adb. Muhtemelen bunun yerine sysfs'den veya doğrudan cihazdan. Muhtemelen en kolay yaklaşım olan adb'yi düşünün.
derobert

Yanıtlar:


1

İlk olarak, bir seri numarası bildirmeyen cihazın gerçekten sorun olduğundan emin olun. adb devicesaltında ilgili cihaza erişim izni yoksa seri numarasını tüm soru işaretleri olarak listeler /dev/bus/usb/. Ayrıca adb'nin bir sunucu başlattığını unutmayın, yeniden sorgulamak için bunu öldürmeniz gerekebilir.

Cihazda gerçekten bir sorun olduğunu varsayarsak, hızlı bir şekilde adb kaynak kodunu kontrol ettim. Görünüşe register_deviceiçinde core/adb/usb_linux.ccihazdan seri numarası düz okur. core/adb/usb_libusb.caramaları libusb_get_device_descriptorcihazdan sysfs veya doğrudan kapmak olan (Libusb kaynak kodu kontrol), bunu yapmak için. Ne yazık ki hiçbir udev hilesi yardımcı olmayacak.

Seçimleriniz şöyle görünecektir:

  • seri numarası olmadan adb'nin nasıl çalışacağını anlayın. Muhtemelen yama adb(açık kaynak kodludur). Bu, Stack Overflow için daha fazla bir soru, sanırım.
  • adb'nin isteğine yanıt vermek için çekirdek usbfs sürücüsüne yama. Bu bana yama eklemek daha zor geliyor.
  • adb'nin libusb kullandığı varsayılarak, syfs'deki seri numarasını taklit etmek için çekirdeği yamala
  • bozuk donanımı onarın.

Teşekkürler - bu açıklıyor. Benim durumumda kırık donanımı düzeltmek daha kolaydı (daha iyi donanım satın almak).
Ralf

1

Belirli bir cihazın cihaz düğümünü biliyorsanız (örn. / Dev / sdb), aşağıdaki komutla arayabilirsiniz: udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Genellikle, android cihazlar için /etc/udev/rules.d/51-android.rules içinde özel bir kural oluşturmaya çalışıyorsanız lsusb, terminalinize yazmak gibi bir şey görüntüler Bus 002 Device 004: ID 062a:3270 Creative Labs . "ID" den sonraki dört karakter - bu durumda - söz konusu dosyadaki 062abelirli karakteri belirtmek için kullanılır idVendor.


Bu, udev kurallarının yazılmasına yardımcı olur, ancak seri numarasını değiştiren bir kural yazmanın herhangi bir yolu var mı?
Ralf

Telefonunuz için bilmiyorum, ancak udev kuralları belirlendikten sonra (ve adb start-serverroot olarak veya sudo olarak çalıştırdığınızda ), adb seri numarasını kendi başına okuyabilecektir.
Drake Clarris

0

Muhtemelen seri değil FTDI, bu yüzden bu şekilde deneyebilirsiniz:

1) Seriyi alın

sudo udevadm info --attribute-walk -n /dev/ttyUSB0  | sed -n '/FTDI/,/serial/p'

2) Kuralı oluşturun ve XXXXXXXX'i bulduğunuz seri veya FAKE seri ile değiştirin

sudo echo 'SUBSYSTEM=="tty", ATTRS{serial}=="XXXXXXXX", GROUP="users", MODE="0660", SYMLINK+="myusbphone"' | sudo tee /etc/udev/rules.d/99-myusbphone.rules

3) kuralları yeniden

sudo udevadm control --reload-rules

.

Bu durumda, bu makalenin yazarına başvurmaya çalışın .


OP'nin seri protokolden bahsettiğini değil, USB cihazının seri numarasını düşündüğünü düşünüyorum. Bu, cihaz tanımlayıcısında satıcı ve ürün kimlikleriyle birlikte biraz kullanılmış bir alandır. Her cihaza özgü olması gerekiyor, ancak USB özelliklerinde zorunlu değil. Taklit etme konusunda cevap yok, üzgünüm. Muhtemelen çekirdeği ...
ali1234
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.