Bug 32293

Summary: Некоторые самартфоны HUAWEI не могут подключиться в качестве mass storage из-за ошибочного срабатывания usb-modeswitch
Product: Sisyphus Reporter: Sergey Y. Afonin <asy>
Component: usb-modeswitch-dataAssignee: Mikhail Efremov <sem>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: asy, sem
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=38208

Description Sergey Y. Afonin 2016-07-20 22:56:40 MSK
Подробности на форуме. Основное начинается с сообщения
https://forum.altlinux.org/index.php?topic=37068.msg291212#msg291212
Comment 1 Sergey Y. Afonin 2016-07-21 15:11:22 MSK
Дополню с форума. Проблема в правиле 

# Generic entry for most Huawei devices, excluding Android phones
ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android"

У прблемного смартфона параметры такие:

    ATTR{idProduct}=="1037"
    ATTR{idVendor}=="12d1"
    ATTR{manufacturer}=="Huawei Incorporated"
    ATTR{product}=="Android Adapter"

Видимо, проверка на "Android" должна быть не только у атрибута "manufacturer".
Comment 2 Sergey Y. Afonin 2016-07-22 09:46:36 MSK
Кстати, интересно, а ATTR{} и ATTRS{} одинаково обрабатываются, получается ? Иначе непонятно, каким образом срабатывает правило ATTRS{idVendor}=="12d1".
Comment 3 Anton V. Boyarshinov 2016-07-22 13:19:54 MSK
(В ответ на комментарий №2)
> Кстати, интересно, а ATTR{} и ATTRS{} одинаково обрабатываются, получается ?
> Иначе непонятно, каким образом срабатывает правило ATTRS{idVendor}=="12d1".

Нет, один из них относится к устройству, а другой к родительскому устройству (не помню какой куда). Это написано в документации к udev.
Comment 4 Sergey Y. Afonin 2016-07-22 15:27:26 MSK
Разобрался. Полностью исходное правило выглядит так:

ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'"

То есть, из-за наличия ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08" оно срабатывает не при добавлении устройства, а добавлении его подустройства (usb-storage получается). В этот момент нужные атрибуты присутствуют, как раз, у родительского устройства, потому и ATTRS.

Проблема, видимо, должна решиться добавлением ATTRS{product}!="Android*" в правило.