?

Log in

No account? Create an account

[icon] Отключение USB устройств в Linux - No hope in here... — ЖЖ
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).

Tags:, ,
Security:
Subject:Отключение USB устройств в Linux
Time:02:18 pm
Настроение:energeticenergetic
Многие пользователи Linux наверняка замечали, что USB mass storage устройства при отмонтированнии файловой системы не "отключаются" полностью, а как бы продолжают быть активными - на них светится индикаторная лампочка или ЖК экран, т.е. устройство продолжает считать себя подключённым и готовым к обмену данными с компьютером. Однако в Windows всё несколько иначе, после использования функции безопасного извлечения устройства USB накопитель полноценно отключается (на нём гаснет индикатор и т.п.). Происходит это потому, что Windows после безопасного извлечения отключает USB порт устройства, а Linux - нет (по словам разработчиков нет оснований этого делать).

Если пользоваться только обычными USB "флешками", то этот нюанс не имеет особого значения. Однако иногда подход принятый в Linux оказывается неудобен, в моём случае это проявляется при использовании MP3 плеера. Дело в том, что мой плеер (iAudio U3) во время "активного" подключения к компьютеру (т.е. когда устройство подключено и готово к обмену данными) всегда отображает на экране одну и туже анимированную картинку, символизирующую обмен данными с компьютером и все. Естественно при этом на него можно записывать файлы и идёт зарядка аккумулятора, но после окончания записи файлов и отмонтирования ФС плеер так и остаётся в этом режиме. При этом не отображается индикатор зарядки аккумулятора (и зарядился ли он до конца или нет неизвестно), экран постоянно работает с максимальным уровнем подсветки, сам плеер греется заметно сильнее и в этом режиме устройство полностью блокировано (нельзя зайти в настройки, "походить" по списку файлов и т.п.).

Всё вышеперечисленное побудило с новыми силами заняться поиском решения этой проблемы, а именно: как же по своему желанию можно отключать USB порт, чтобы плеер переходил в режим чистой зарядки аккумулятора (в этом режиме естественно подсветка становится поменьше, плеер греется слабее и доступен для использования весь его функционал).

Поискать пришлось достаточно долго, но в конце концов ответ был найден в архивах рассылки linux-usb-users.

В результате родился вот такой простейший скрипт, которому в качестве единственного параметра нужно передать имя блочного устройства, соответствующего подключенному плееру (например, sda или sdb), запускать нужно под root:

#!/bin/sh
umount /dev/$1
echo -n 3 > /sys/block/$1/device/../../../power/state
echo -n 3 > /sys/block/$1/device/../../../../power/state


Этот скрипт делает именно то, что мне было нужно (полный аналог функции безопасного извлечения устройства в Windows). Подробнее о принципе работы скрипта читайте по вышеприведённой ссылке.

Надеюсь кому-то эта информация также окажется полезной.
comments: Оставить комментарий Previous Entry Поделиться Next Entry

(Anonymous)
Link:(Link)
Time:2007-11-27 12:29 pm
В последних версиях ядра выкинули файлы /sys/.../power/state, так что рецепт сейчас не работает
(Ответить) (Parent) (Thread)


alexey_m
Link:(Link)
Time:2007-12-03 02:21 am
Хм, неужели никакой замены не предоставили?
Сам пока сижу на "старых" ядрах, проверить не могу.
(Ответить) (Parent) (Thread)

(Anonymous)
Subject:Есть решение
Link:(Link)
Time:2007-12-23 05:20 pm
echo suspend > /sys/bus/usb/..../power/level

Сам долго искал. Может кому-то поможет.
(Ответить) (Parent) (Thread)

[icon] Отключение USB устройств в Linux - No hope in here... — ЖЖ
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).