Bug 32293 - Некоторые самартфоны HUAWEI не могут подключиться в качестве mass storage из-за ошибочного срабатывания usb-modeswitch
Summary: Некоторые самартфоны HUAWEI не могут подключиться в качестве mass storage из-...
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: usb-modeswitch-data (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-07-20 22:56 MSK by Sergey Y. Afonin
Modified: 2020-03-11 17:16 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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*" в правило.