Pull to refresh
7
0

Пользователь

Send message
Я видел такую штуку как User Mapping на ntfs. Может это то что нужно?
Ну по идее да. Но я так не пробовал. Потому что, как уже говорил, мне нужен exchange раздел на внутреннем накопителе, на котором установлены системы.
А вообще, если как-то можно было бы сделать хотя бы userspace драйвер для mac, но чтобы он мог работать именно с разделом, то я бы выбрал udf. Но я в эту сторону не копал.
Ух ты, ёще и на майкрософтовском ресурсе… а я такую не нашёл и хотел создать самостоятельно. Но решил просто остановиться на написании статьи.
Да, регистро-зависимость очень важная тема.
Небольшой оффтоп
Сейчас вот столкнулся с этим. Поставил хакинтош на hfs+ регистро-зависимую, чтобы чувствовать себя более-менее линуксово. Каково же было моё удивление, когда софт Adobe отказывается устанавливаться на такую фс!


Если Apple в своей новой APFS сделает по дефолту case sensative, может они исправят свои исходники. Но пока что они исправили это предотвращением установки на регистро-зависимую фс. Господи, Adobe, это позор!

По поводу hard link'ов в курсе. Обидно, но придётся обойтись без них.
А в чём именно выражался ужас exfat?
Для внешнего накопителя, который целиком предназначен для ос-независимого файлообмена подходит UDF, как я указывал в статье.
Нагуглилось: нужно в поиске приложения набрать «I love Google Photos» соблюдая регистр. Тогда вылетит этот андроид на ракете и полетает пару секунд на экране. Видео:
Update: давно бросил это приложение (в ноябре 2016), но обнаружил, что его наконец пофиксили! Судя по одному из комментариев это произошло в версии 2.9 от 17.02.2017.
Печать из терминала как раз-таки никаких проблем не вызывает. Но не всегда хочется открывать его и прописывать команду. Я выбрал этот способ из-за некоторых других проблем в Okular и evince.

Одна из них — это то, что в okular (на данный момент) нет возможности «запомнить» что я хочу печатать без полей. Приходится каждый раз при печати очередного документа выкручивать их мышью или прописывать с клавиатуры.

Другая проблема — это то, что поворот pdf документа в okular и evince применяется лишь к просмотрщику. Фактически документ не поворачивается. С помощью pdf shuffler можно реально повернуть документ и печатать из терминала. C помощью lp тоже можно повернуть документ, только нужно больше символов прописывать в терминале и можно случайно забыть это сделать.
Ещё нет. На bugs.kde.org я вижу компонент print-manager, надо писать туда?
Спасибо, но это не то что нужно.
Boomaga is a virtual printer for viewing a document before printing it out using the physical printer and help you get your documents prepared a bit before printing.
В статье я рассматриваю ситуацию когда у меня уже есть нужный документ и мне его нужно физически напечатать.
Спасибо за названия файлов. Сейчас adobe зачем-то прячет эту спецификацию и на их сайте её не найти. Но в веб архиве ещё можно посмотреть.
Сейчас глянул, по поводу ImageableArea я был прав:
The imageable region is defined as the part of the page where marks can actually
be made. On many devices, there are margins imposed by the media
transport mechanism in the marking engine that might prevent marks from
being made close to the edges of the media. The *ImageableArea entry will
supply a region that represents a “reliable” area of the page in which marks
can be made.
Я понял проблему так: вы пользуетесь хакинтошем, и вы намеренно установили его на внешний жёсткий диск. Вам неудобно, что если хотите загрузиться в хакинтош, вам кроме внешнего жёсткого диска приходится вставлять ещё и флешку с кловером.

Я бы сделал так.
1) Установил бы первым загрузчиком rEFInd. По-моему самый удобный и красивый загрузчик.
2) Установил бы clover вторым загрузчиком. Вроде как он заточен именно под загрузку яблок.
3) REFInd имеет возможность обнаруживать установленные ОС даже без конфигурации конфига. Вы можете настроить, чтобы наряду с Linux и Windows в его меню отображался clover. В rEFInd есть возможность сразу добавить в меню мак, но я думаю это будет работать только на настоящих маках.
4) Когда нужен win или lin, выбираете их из меню rEFInd при включении. Если нужен хакинтош — выбираете кловер, затем, попав в него, уже выбираете мак с подключенного жёсткого диска.
Проблема решена — загрузочная флешка с кловером больше не нужна.
Я ещё поисследовал вопрос по поводу идеи 3.
Оказывается, существует Android Open Accessory Protocol. Он описывает, как подключаемый по usb аксессуар должен взаимодействовать со смартфоном. Начиная с android 4.1 появилась спецификация 2.0, и в ней появилась поддержка передачи аудио на аксессуар. В первую очередь подразумевалась аудио док станция. Но нам нужно забрать аудио на обычный линукс комп.
В спецификации описано, какие именно данные нужно слать на смартфон, чтобы переключить его в аксессуарный режим. Там можно например задать url с которого надо скачать приложение для аксессуара. Кроме того, описано, что можно не определять конкретное приложение, а просто запросить аудио.

К сожалению, гугл описывает разработку так, будто у меня есть ардуино. Но у меня его нет. Я стал искать, возможно ли как то обойтись без него, ведь наша конечная цель — просто подключение к компу без лишнего железа. Я нагуглил статью, в которой, к моей радости, это было описано. Да, arduino ну нужен =).
А вот и проект, на котором автор приведённой выше статьи сделал свой проект.
Я закачал его, сделал make, посмотрел через lsusb текущий pid:vid моего смартфона (меняется при переключении режимов). Например, сейчас у меня такие id: 04e8:6865. Выполняю команду
./linux-adk --device 04e8:6865 --no_app

Аппарат действительно переводится в режим аудиокарты, т.е. в lsusb мы теперь видим 18d1:2d04 Google Inc. В вашем случае будет какой-то id из этого списка в зависимости от того, включали ли вы отладку и какие параметры передавали через linux-adk.

Можно было бы сказать, что музыка со смартфона перенаправляется на usb, т.к. в интерфейсе плеера воспроизведение продолжается, а звук с динамика телефона прекращается. Но это не совсем так.
В системе у меня появляется ещё одно аудио устройство. Если ввести arecord -l, то я вижу
**** List of CAPTURE Hardware Devices ****
card 1: PCH [HDA Intel PCH], device 0: ALC233 Analog [ALC233 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 2: SAMSUNGAndroid [SAMSUNG_Android], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Но в pavucontrol я могу видеть, что на нём не колеблется индикатор звука.

Что это значит? То ли чего-то неправильно в linux-adk (сомневаюсь), то ли это самсунг сделали такую реализацию-пустышку (склоняюсь)? Сами гугл не рекомундуют использовать usb audio вывод:
Accessory mode audio has not been widely adopted, and is not currently recommended for new designs.
Может поэтому самсунг так «реализовали» эту функцию?

Ещё могу сказать, что при посадке в настоящую док станцию, смартфон об этом сообщает. Т.е. в шторке появляются рекомендуемые приложения (PageBuddy) и на экране отображается радуга. А здесь такого нет.

Я проверил галочку «Prevent usb audio routing» в настройках разработчика, но в моём случае она ни на что не влияла.
Скорее всего, самсунговская подставка не использует стандартную реализацию, которую мы только что пытались осуществить. Ну как-то же работает он со своей станцией… Может быть есть где-то на смартфоне список известных ему аксессуаров? Наверняка там есть описание этой подставки. Если бы найти это описание, мы бы возможно узнали какие сигналы нужно послать, чтобы «задокить» смартфон.

Или же мне надо сниффить как смарт общается с этой подставкой. Но может быть вообще ничего из этого не получится. И дело даже не в том, что я пока не имею опыта как это делать, а в их странном usb коннекторе.
Для чего-то же они используют своё расширение из 6 контактов… Может быть это два usb порта, объединённые в один? Даже не ясно в каком режиме подключается подставка: хоста, аксессуара или в каком-то смешанном самсунговском.
Ну, даже если это и получится, вряд ли это будет решением для пользователей других производителей.

В итоге, на данный момент перевести в режим аудиокарты удалось, но не удалось забрать звук.
У кого-нибудь есть опыт в usb сниффинге?

Ещё ссылки по теме:
http://blog.jfedor.org/2013/01/usb-audio-dock-for-android.html
https://github.com/SquidIndustries/AndroidCarAudioDock
https://www.youtube.com/watch?v=MzIWi1Q-DaE
http://android.serverbox.ch/?p=262
Я поизучал информацию с оф. источника касательно идеи 3.
И мне кажется, что сделать это проще, чем кажется.
Итак, Android может работать в трёх разных режимах usb:
1) Режим разработчика.
В нём доступны только fastboot и adb. При подключении к хосту (компу) он определяется в этом режиме.
2) Режим хоста.
По otg кабелю можно подключить аудиокарту. Я упоминал, что это близкая тематика, но к нашей задаче не относится, т.к. нам надо, чтобы сам смартфон выступал аудиокартой. Ну, разве что превратить комп в «периферийное устройство» и подключаться к смартфону. Этот режим нам не нужен.
3) Режим аксессуара.
Это как раз то, что нам нужно. В этом режиме тоже может быть доступен adb. Но главное, что смартфон является периферийным (не главным) устройством для хоста.

Там же написано, что чтобы перевести смартфон из режима разработчика в режим аксессуара, нужно пройти re-negotiation process.

Ещё там написано,,
Android 4.1 (API level 16) added limited support for audio playback to the host. While in accessory mode, Android automatically routes its audio output to USB. That is, the Android device serves as a data source to the host, for example a dock.

Это же то, что нам нужно!
Теперь мне кажется, что даже не понадобится собирать никакие модули ядра. Всё уже итак должно работать. Вот как это описано:
The Android device must be controlled by a knowledgeable host that can first transition the Android device from development mode to accessory mode, and then the host must transfer audio data from the appropriate endpoint. Thus the Android device does not appear «driverless» to the host.

Действительно, я такой режим видел. Для смартфона samsung S4 есть мультимедиа подставка.
фото подставки
image

Не могу точно сказать в каком режиме она работает с телефоном. В неё можно подключать usb устройства (это как бы режим otg хоста), micro-usb (для питания самой док подставки и для подключения к компу в обычном режиме аксессуара), hdmi кабель (как бы режим mhl), и аудио кабель (как бы режим аксессуара, тот самый, что нужен нам). Я разбирал её, и там видно, что используется не 5 контактов usb, а целых 12!
картинки




P.S. мне нужно восстановить переломанный шлейф. Если кто-то умеет заниматься мелкой пайкой, свяжитесь пожалуйста со мной.

В самом конце страницы сказано, что производителю нужно правильно реализовать аудио политику в файле audio_policy.conf
audio_hw_modules {
  ...
  usb {
    outputs {
      usb_accessory {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
      }
    ...
    }
    ...
    }
  }
  ...
}


У меня файл расположен в /system/etc/, и такую политику он содержит.

Теперь вопрос только в том, как (и возможно ли) сделать так, чтобы комп вёл себя как медиа подставка (которая, как и комп, является хостом). Он должен перевести смарт из режима разработчика в режим аксессуара, причём не в простой, а именно в «мультимедиа-док» режим.

По этому вопросу я нашёл старый вопрос на stackoverflow. Но я не понял как это можно сделать. Есть ли какой-то известный путь или нужно как-то отснифать usb траффик мужду мультимедиа подставкои и смартфоном?
Про USB. VID:PID определяется драйвером USB-gadet. Но главное не пара VID:PID, а класс интерфейса.
Ядро уже поддерживает гаджет аудио-карты: drivers/usb/gadget/function/f_uac1.c
Так что если сможете собрать этот модуль для своего телефона — проблем особых не будет.

А вы не подскажте как это всё делается? Я представляю то о чём вы говорите так:
1) Для Android собрать модуль ядра f_uac1 из исходника (Этот исходник?)
2) Поместить его на смартфон
adb push f_uac1.ko /system/lib/modules/
и перезагрузить смартфон.
3) Если он не будет загружен автоматически, то выполнить на смартфоне
insmod f_uac
Да, это как раз именно то что я имел в виду когда говорил про ALSA. USB Audio Gadget будет выглядеть как ещё одна звуковая карта. Соответственно можно работать с ним стандартными линуксовыми методами. Единственная проблема в том, что начиная с Android 3.x на устройствах больше не ставится полноценная alsa-lib. Вместо неё используют TinyAlsa.

То есть через TinyAlsa работать не получится и придётся доустанавливать ещё обычную alsa?
4) Работать линуксовыми методами. (как именно?)

По поводу сложности встраивания в Android Framework: а зачем? Я думаю, можно написать приложение, которое и будет «работать линуксовыми методами», используя busybox.
Мне удалось заставить работать идею 5.
Вот что я для этого делал.
Установил blueman и pulseaudio-bluetooth,
создал файл /etc/bluetooth/audio.conf со следующим содержимым:
[General]
Enable=Source,Sink,Media,Socket

Перезагрузился. Включил блютус на компе и на смарте.
Удалил как как с компа так и со смарта предыдущее сопряжение.
Открыл blueman.
Теперь нужно инициировать сопряжение. Тут происходили какие-то странности. Долго не мог сделать подключение, потом каким-то образом сделал. Поэкспериментировав, так и не выяснил, как надо делать.

Простое сопряжение невозможно сделать ни с компа, ни с телефона.
То есть если на телефоне нажать на иконку для подключения ноутбука, то на нём и на компе появляется диалог для подтверждения ключа доступа для соединения. Он совпадает на компе и на телефоне. Я подтрверждаю его и на компе и на телефоне. Но затем на телефоне выводится тост, что «Невозможно установить соединение с буком. Неправильный PIN-код или пароль».
Если инициировать сопряжение с компа, оно тоже фейлится. Заходим в blueman, выполняем поиск bluetooth устройств, видим наш смартфон, нажимаем пкм по нему, и нажимаем «Сопряжение» (пункт меню с серебряным ключиком). На компе вылезает диалог для подтверждения ключа, который я принимаю. Но на смартфоне прикол: сначала выводится окно «Ошибка» с тем же текстом «Невозможно установить соединение с буком. Неправильный PIN-код или пароль» и с единственной кнопкой «Ok». А после её нажатия появляется диалог подтверждения ключа сопряжения. Каким образом он узнаёт, что пин неверный, если я ещё его подтверждить не успел? Причём код соответствует тому, что на компе. Но подтвердив его, сопряжение не регистрируется.
Это чьи баги: линукса или андроида?

Я больше склонялся, что андроида. Потому как часто приходят двойные подтверждения кода. Что-то он вообще тупит… Вот выключаю блютик на компе, а на смарте он ещё отображается в доступных устройствах даже после повторного перепоиска.
Короче, создать это сопряжение — реально баганутое дело. Из многих десятков попыток были единичные случаи удачных сопряжений. Как я только ни пробовал… Инициировал сопрожение одновременно и с тела и компа, пробовал подтверждать код сначала на компе, потом на теле и в обратном порядке: сначала на теле, потом на компе, пробовал выжидать несколько секунд (чтобы успела дойти информация), пробовал делать тел невидимым, пробовал сначала пометить тел как доверенный в блюмане. И всё это в разных комбинациях и порядке. И никакой закономерности при удачном сопряжении!

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

Итак, нам наконец удалось авторизовать комп на смарте. Он отображается в разделе Подключенные устройства и помечен как Авторизовано. Теперь не него можно нажать. Он загорится синим и будет надпись «Подключен звук мультимедиа».
Также можно подключиться из блюмана. Нажимаем пкм по смарту, выбираем пункт «подключиться к: источник звука» (позволяет принимать звук с устройства).

Чтобы проверить, что комп предоставляет смартфону сервис синк (то есть выступает как наушники), выполните поиск сервиса для мак адреса смартфона:
sdptool search --bdaddr… a2snk
Если будет одна строка Searching for a2snk on FF:FF:FF:00:00:00 ..., значит сервис не предоставляется. (узнал отсюда )

Теперь откроем приложение Mic to Speaker. Нажимаем в нём кнопку Talk on. Ура, мы слышим звук со смарта на компе!
Открываем pavucontrol, на вкладке проигрывание мьютим наш источник. Откроем audacity и попробуем записать что-нибудь.
Запись работает. Звук неплохой.

Но бывает происходят внезапные остановки записи. Я выяснил почему. Оказывается, наш источник (смартфон), несмотря на то что он подключен, доступен в системе лишь тогда, когда он реально посылает какой-то звук. Если заглянуть в pavucontrol, мы можем наблюдать, что наш bluetooth источник будет исчезать, если мы выключаем talk, и появляться, когда мы снова включаем talk. Так что советую в pavucontrol на вкладке запись явно указать, что для приложения Audacity вы хотите использовать смартфон. Тогда вы случайно не запишите звук со внутреннего микрофона. А чтобы при диктовке текста не отвлекаться на контролирование того, что запись не оборвалась, просто не выключайте talk.

Думаю, мы можем считать, что идея 5 полностью реализована, за исключением глючности блютуса в KDE.
P.S. по поводу моего упоминания того, что возможно понадобится ещё один bluetooth донгл, чтобы обычные устройства могли подключаться к компу. Я нашёл эту страницу. Там в разделе One more thing, honey говорится что использовать комп одновременно и для стриминга (на bt колонки) и для ресивинга (со смарта по bt) невозможно. Но это относится к аудио. Что по поводу других устройств (например, bt клавиатуры) при ресивинге я не знаю.
Кстати не, мне кажется вариант с подключением наушника в микрофонный вход всё же к нам не относится. Если вы оказались на необитаемом острове и нашли разбитый корабль, тогда может быть такой «микрофон» вас спасёт. Но мы тут говорим об озвучке. И уж явно даже у внутреннего мика ноутбука звук будет не хуже.
даже на десктопах, где не нужно сильно экономить на дырках, есть возможность втыкать разные устройства в один и тот же разъем — система просто спрашивает, что именно воткнули.

Если я не ошибаюсь, так можно было делать только на некоторых реалтеках на десктопах. Вы могли конфигурять практически любой джек как вам угодно.
скриншот

Не могу сказать, была ли такая возможность на лэптопах. Например, у моего такой возможности нет даже под win. Соответственно, я думаю, что это аппаратное ограничение, поэтому я даже не выяснял, бывает ли такое под линукс.
На самом деле, я сильно подозреваю, что воткнуть line-level в микрофонный вход можно и оно будет нормально работать.

Вы ошибаетесь. Так сделать не получится. Line уровень намного выше микрофонного. Если вы воткнёте штекер с такой напругой в мик гнездо, то в лучшем случае вы получите полное зашкаливание, в хучшем — спалите приёмник.
Чтобы воткнуть line в mic, нужен либо аттенюатор, либо аппаратная поддержка этой возможности звуковухой.
Спасибо за ваш комментарий, именно таких я и жду.
Беда в том, что профиль гарнитуры обеспечивает моно звук с частотой дискредитизации 8кГц. Этого достаточно разве что для разговоров через GSM.

Спасибо за информацию.
Можно бы использовать A2DP но андроидный блютус стек не поддерживает его в режиме Source. Только Sink.

Синк — это же «назначение», а source — источник, правильно? Так нам же по идее нужен sink. То есть комп — это A2DP наушники, на которые смарт сливает звук.
Ядро уже поддерживает гаджет аудио-карты: drivers/usb/gadget/function/f_uac1.c
Так что если сможете собрать этот модуль для своего телефона — проблем особых не будет. Правда, вам не удастся встроить его в Android Framework. Точнее, встроить то можно, но это куча работы: audio hal, audio policy, framework.

Спасибо. Я не всё понял, так как не ковырялся в теме. Но я так понял, что вы про то, что проблемы будут в том, что из приложений нельзя будет управлять переключением в режим аудиокарты? А можно ли тогда сделать приложение нативным или, не знаю, создать скрипт какой-нибудь и из терминала его запускать?
Проще тупо фигачить данные через ALSA.

А это как? Имеется в виду смартфонная альса? И как поток окажется на компе?
Заставить выводить часть звуков в динамик, а часть — в разъем наушников тоже тяжело. Надо переделывать тот самый Audio Policy.

Ну, это просто пожелание, нежели требование. На самом деле можно воткнуть например портативную колонку в Y сплиттер (если используется вариант 2).
Не согласен. То уг что вы купите в ашане за 89 рублей можно сразу же переместить в помойку. Качество будет на уровне встроенного мика или ещё хуже. Вы сами попробуйте таким озвучку сделать.
А нормальные смартфоны очень качественно пишут. То ли у них обработчик там какой-то особый, то ли реально какое-то железо хитрое, но факт в том, что качество записи на них гораздо круче.
Samsung SideSync — только win или mac, только samsung galaxy смартфон, только touchwiz прошивка, завязка на сервисы samsung. Есть Kde connect, который умеет переносить файлы по wifi, но опять же, хочется чтобы записи слались на комп автоматом.

Information

Rating
Does not participate
Location
Россия
Registered
Activity