Remote Volume Control

Есть такая клёвая простенькая программа для телефона: Remote Volume Control. Делает одну простую вещь - даёт крутить громкость на компьютере (PC). Удобно: включил кино, упал в гамак и когда вдруг возникла необходимость — подкручиваешь громкость.

Вдруг в какой-то чудесный день программа просто молча перестала работать. Никаких обновлений не было, настройки сети не менялись... Как-то я вот не привык чтобы программы вдруг ломались и переставали работать сами по себе.

Отступая от темы, вообще говоря есть веб-интерфейс и даже специализированный клиент для vlc, который, в том числе, и громкость позволяет крутить, но у него есть два недостатка: он не будет работать для других плееров или youtube и второе - он медленный (потому что tcp).

Возвращаясь к предмету, Remote Volume Control очень простая программа она позволяет крутить системный master volume. Для работы нужно ещё запустить простенький консольный сервер, работает он мгновенно и ещё умеет гасить монитор. Гасить монитор мне не надо вообще никогда, вот выключение питания помогло бы… ну нет так нет, не об этом речь.

В общем вдруг внезапно программа просто тихо перестала работать. Я всю голову сломал, в чём может быть дело. Удалил некоторые недавно установленные программы, думал кто-то занял её порт или что-то такое… что я только не пробовал. Ближе к концу я уже при помощи netcat стал изучать протокол, в отчаянной попытке понять что же может быть не так.

Так вот работает эта штука по UDP, занимает 5555-й порт. Просто шлёт команду и не ожидает, похоже, никакого ответа. Что, с одной стороны клёво: работает очень быстро. С другой стороны полное отсутствие обратной связи: вообще не понятно дошло ли сообщение или нет.

Сам протокол… "протокол" это громко очень сказано, просто при смене громкости с телефона приходит "0.25" например, прямо текстом. Это значит 25% громкости. А по команде "погасить монитор" приходит 1.00, вот и весь протокол.

При помощи того же netcat я пробовал эмулировать и клиент, может серверная часть "протухла" и с ней что-то не то, писал те же 0.25… нет успеха, сервер не реагировал вообще никак (а при нормальной работе он показывает какую ставит громкость).

Поставил сниффер, снова написал что-то в netcat и тут бах, у меня гаснет монитор.

Думаю: "нормальный сниффер, убил мне систему". Оказалось, монитор погасил мне сервер от Remote Volume Control, причём по команде и написал про это в консоли.

"Вот это уже интересно", подумал я. Смотрю что я последнее отправил - "123". Снова пишу "123", - монитор корректно гаснет. Так же он гаснет если писать "321", "12", любые цифры, а если встречается буква, то никакой реакции. И если писать законную команду на отключение монитора "1.00" то тоже тишина.

И вот тут меня осенило: десятичная точка. Ну и точно, пишу "1,00" - монитор гаснет. "0,25", пишет что 25% громкости.

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

Зашёл в региональные настройки, сменил десятичный разделитель с запятой на точку и всё у меня заработало.

tags: analyse, идиоты
15.06.2013, 12:20:43