Как смонтировать Android как CD-ROM?

У меня Galaxy S4 с кастомным ПЗУ и ядром. Мне нужно смонтировать ISO-образ с SD-карты на ПК с Windows/Linux в виде компакт-диска.
Есть приложение "DriveDroid", которое работает нормально, но мне нужно сделать это вручную (для изучения). Windows 8 пишет, что "Требуется форматирование устройства".
код (скрипт bash)

# Disable USB
echo 0 > /sys/class/android_usb/android0/enable

# Set Vendor and Product IDs
echo 0x04e8 > /sys/class/android_usb/android0/idVendor
echo 0x6860 > /sys/class/android_usb/android0/idProduct

# Set mass_storage mode
echo mass_storage > /sys/class/android_usb/android0/functions

# Enable CD-ROM and make read-only (ERROR HERE!)
echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun0/cdrom
echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun0/ro

# Set path to ISO
echo /mnt/shell/emulated/0/obraz.iso > /sys/class/android_usb/android0/f_mass_storage/lun0/file

# Enable USB
echo 1 > /sys/class/android_usb/android0/enable

Однако файлы cdrom и ro по-прежнему имеют значение 0. Что еще нужно сделать, чтобы сделать их равными "1"?


person Groosha    schedule 16.04.2015    source источник
comment
Какая-то ошибка отображается? Ошибка прав доступа, недопустимый файл... - В любом случае, попробуйте chmod +w /sys/class/android_usb/android0/f_mass_storage/lun0/cdrom, то же самое для другого файла.   -  person ShellFish    schedule 17.04.2015
comment
@ShellFish, нет, ошибки не отображаются. Скрипт работает нормально, однако cdrom равно 0 (вместо 1), поэтому Windows 8 выдает диалоговое окно для использования диска в F:\ сначала отформатируйте его   -  person Groosha    schedule 17.04.2015
comment
@ShellFish, файл cdrom имеет права -rw-r--r-- и принадлежит пользователю root (из которого я вызываю скрипт)   -  person Groosha    schedule 17.04.2015
comment
Может что-то перезаписывает? Попробуйте добавить cat /sys/class/android_usb/android0/f_mass_storage/lun0/cdrom сразу после установки? Или echo $? проверить код выхода?   -  person ShellFish    schedule 17.04.2015
comment
@ShellFish показывает 0 как перед попыткой установить 1, так и после нее.   -  person Groosha    schedule 17.04.2015
comment
@ShellFish это очень странно, потому что после одного использования DriveDroid я могу записать 0 и 1 в cdrom, но без предварительного использования я не могу o_O   -  person Groosha    schedule 17.04.2015
comment
Должно быть что-то перезаписывающее значение, возможно, попробуйте записать значение на более позднем этапе.   -  person ShellFish    schedule 17.04.2015
comment
@ShellFish Хорошо, я попробую   -  person Groosha    schedule 17.04.2015


Ответы (2)


# Disable USB
echo 0 | tee /sys/class/android_usb/android0/enable

# Set Vendor and Product IDs
echo 0x04e8 | tee /sys/class/android_usb/android0/idVendor
echo 0x6860 | tee /sys/class/android_usb/android0/idProduct

# Set mass_storage mode
echo mass_storage | tee /sys/class/android_usb/android0/functions

# Enable CD-ROM and make read-only
echo 1 | tee /sys/class/android_usb/android0/f_mass_storage/lun*/ro

# Set path to ISO
echo | tee /sys/class/android_usb/android0/f_mass_storage/lun*/file
echo <YOUR-IMAGE-FILE-PATH> | tee /sys/class/android_usb/android0/f_mass_storage/lun*/file

# Enable USB
echo 1 | tee /sys/class/android_usb/android0/enable

Это работа на моем телефоне. (Asus T00F - андроид 7.1.2)

person ali rıza keskin    schedule 20.11.2018

Перед записью 1 на "cdrom" и "ro" мне пришлось очистить файл "file". Спасибо @FrozenCOW (разработчику DriveDroid) за помощь!

# Clear path to ISO
echo "" > /sys/class/android_usb/android0/f_mass_storage/lun0/file

# Enable CD-ROM and make read-only (ERROR HERE!)
echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun0/cdrom
echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun0/ro

# Set path to ISO
echo /mnt/shell/emulated/0/obraz.iso > /sys/class/android_usb/android0/f_mass_storage/lun0/file
person Groosha    schedule 05.05.2015