Alexey Molchanov (alexey_m) wrote,
Alexey Molchanov
alexey_m

Categories:
  • Mood:

Отключение USB устройств в Linux

Многие пользователи 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). Подробнее о принципе работы скрипта читайте по вышеприведённой ссылке.

Надеюсь кому-то эта информация также окажется полезной.
Tags: linux, mp3 player, usb
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments