Прошу прощения за задержку. Были определенные заморочки - вчера не смог ответить.
Так, прежде всего надо понять, - если что-то пойдет не так, сможем ли мы после восстановить все до исходного состояния. Сделайте бэкап рабочей системы, выполните копирование всех текущих записей диктофона на какой-нибудь диск, убедитесь, что имеете возможность выполнить перепрошивку диктофона, если в этом будет необходимость.
Сами понимаете - мы пытаемся сделать принудительное определение драйвера, а значит через USB порт с диктофоном система общаться будет по тем спецификациям, которые расписаны в этом драйвере. И как отреагирует диктофон на такое общение - заранее предсказать сложно. В лучшем случае - проигнорирует, в идеальном варианте - даст читать и записывать (второе я бы проверял с особой осторожностью) информацию на встроенную память, в худшем - слетит прошивка, и девайс станет кирпичом. Не предупредить я не могу, - сами понимаете.
Теперь, поскольку мы уверены, что физическая возможность чтения памяти нам доступна (под Windows со специфичными драйверами устройство определяется нормально), с учетом того, что по выхлопу usb-devices нам не требуется отвязывать устройство от применяемого драйвера, ибо драйвер не применяется:
T: Bus=02 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 37 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=00 MxPS=16 #Cfgs= 1
P: Vendor=054c ProdID=0271 Rev=01.00
S: Manufacturer=Sony
S: Product=Sony IC Recorder (P)
C: #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
Следовательно нам осталось прицепить иной драйвер (в рассматриваемом случае это применяемый для всех usb-накопителей usb-storage к данному устройству.
На своей машине весь порядок испытать не могу, т.к. нет у меня устройства, которое бы не определялось. Однако, выбрав жертвенную флешку, я сделал ей бо-бо путем сперва отвязки ее от драйвера, а после - привязки к драйверу. Эксперимент прошел нормально, флешка жива. Система Ubuntu 16.04, флешка Kingston, подробности под спойлерами.
Вставляю флешку в порт. Флешка у меня будет отмонтирована. На смонтированной не проверял, - опасаюсь, что данные могут пострадать. Ввожу lsusb. Получаю информацию о флешке:
[ЮЗВЕРЬ]@PC_NAME:~$ lsusb
Bus 002 Device 003: ID 0951:1666 Kingston Technology DataTraveler G4
теперь ищу ее на шине. Для этого:
[ЮЗВЕРЬ]@PC_NAME:~$ grep 0951 /sys/bus/usb/devices/*/idVendor
/sys/bus/usb/devices/2-2/idVendor:0951
Вижу, что на на 2-2. Но это не полный идентификатор, который мне нужен. Ищу дальше.
[ЮЗВЕРЬ]@PC_NAME:~$ ls /sys/bus/usb/devices/ | grep 2-2
2-2
2-2:1.0
Вот походу устройство 2-2:1.0 - то, что надо. Можно в этом убедиться:
[ЮЗВЕРЬ]@PC_NAME:~$ cat /sys/bus/usb/devices/2-2\:1.0/modalias
usb:v0951p1666d0110dc00dsc00dp00ic08isc06ip50in00
Видим в последнем v0951p1666, что значит v = 0951 и p = 1666, что соответствует выводу lsusb. А значит нашли. Если же проверить что в 2-2, то там симлинк на нашу 2-2:1.0, а значит вывод верный - адрес устройства на шине мы выяснили.
Теперь выполним проверку на каком драйвере оно у нас сидит:
[ЮЗВЕРЬ]@PC_NAME:~$ usb-devices
...
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=5000 MxCh= 0
D: Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=0951 ProdID=1666 Rev=01.10
S: Manufacturer=Kingston
S: Product=DataTraveler 3.0
S: SerialNumber=60A44C3FAF75E0A13994021A
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=504mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
...
Видим: usb-storage
Обратная проверка:
[ЮЗВЕРЬ]@PC_NAME:~$ ls /sys/bus/usb/drivers/usb-storage/
2-2:1.0 bind module new_id remove_id uevent unbind
Видим ссылку на устройство.
Теперь выполним отвязку от данного драйвера:
[ЮЗВЕРЬ]@PC_NAME:~$ cd /sys/bus/usb/drivers/usb-storage/
[ЮЗВЕРЬ]@PC_NAME:/sys/bus/usb/drivers/usb-storage$ sudo sh -c "echo 2-2:1.0 > unbind"
[sudo] пароль для [ЮЗВЕРЬ]:
После ввода пароля устрйство от драйвера будет отвязано. И смонтировать его уже не удается, и sudo blkid его уже не видит, и вообще все грустно...
Например, lsusb его видит успешно:
lsusb
Bus 002 Device 003: ID 0951:1666 Kingston Technology DataTraveler G4
usb-devices видит что драйвер не используется:
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=5000 MxCh= 0
D: Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=0951 ProdID=1666 Rev=01.10
S: Manufacturer=Kingston
S: Product=DataTraveler 3.0
S: SerialNumber=60A44C3FAF75E0A13994021A
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=504mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
Словом, все как в сабже, только с флешкой. Вывод - отвязали устройство от драйвера.
Ранее мы уже выяснили адрес флешки на шине, поэтому зацикливаться на этом не будем. Примем на веру: 2-2:1.0, ибо мы ее не перетыкивали. Выбранный нами драйвер (к которому будем подвязываться) - "usb-storage"
Выполняем привязку устройства к драйверу:
[ЮЗВЕРЬ]@PC_NAME:~$ cd /sys/bus/usb/drivers/usb-storage/
[ЮЗВЕРЬ]@PC_NAME:/sys/bus/usb/drivers/usb-storage$ sudo sh -c "echo 2-2:1.0 > bind"
Ну и молниеносно происходит определение диска... Даже ничего дополнительно делать не пришлось. Хотя могу предположить, что с диктофоном все будет не так гладко.
Для этого пробуем такой порядок:
1. Определим текущий адрес устройства на шине (он может меняться по разным причинам, поэтому при каждом новом подключении эту информацию следует перепроверять):
grep 054c /sys/bus/usb/devices/*/idVendor
В выхлопе видим что-то вроде
/sys/bus/usb/devices/2-2/idVendor:054c
Нам интересно из всего этого
2-2.
Теперь вводим в терминал:
ls /sys/bus/usb/devices/ | grep 2-2
Получаем что-то вроде:
2-2
2-2:1.0
Убеждаемся в том, что данное устройство "
2-2:1.0" именно наше:
cat /sys/bus/usb/devices/2-2\:1.0/modalias
В ответ получаем "
usb:v054cp0271..." (это фрагмент вывода, который должен быть для Вашего диктофона)
Если устройств более одного - дальше ничего не делаем, а думаем как это интерпретировать. Если же выхлоп совпадает с примером, приведенным мной - значит нашли адрес на шине, и это "2-2:1.0" (если у Вас другой - учитывайте это далее при вводе команд).
2. Выполним привязку данного устройства к драйверу usb-storage (подставляем вместо адреса 2-2:1.0 тот адрес, который определился в Вашей системе для Вашего устройства!):
[ЮЗВЕРЬ]@PC_NAME:~$ cd /sys/bus/usb/drivers/usb-storage/
[ЮЗВЕРЬ]@PC_NAME:/sys/bus/usb/drivers/usb-storage$ sudo sh -c "echo 2-2:1.0 > bind"
После ввода потребует пароль суперпользователя. Водим. Смотрим что происходит в системе. Во-первых:
usb-devices
[убеждаемся что вместо Driver=(none) пишет Driver=usb-storage]
Во-вторых:
ls /sys/bus/usb/drivers/usb-storage/
убеждаемся в наличии символьной ссылки на устройство 2-2:1.0, которое мы добавили.
В-третьих, проверяем выхлопы
fdisk -l
и
sudo blkid
на предмет наличия новых дисков.
Возможно, придется монтировать руками. Возможны загвоздки с определением файловой системы. Если смонтировалось и открылось - проверяем чтение файлов. Запись файлов - с особой осторожностью, будучи морально готовым все и вся потерять (см. начало данного поста).