Метушня навколо модема

written on Saturday, March 24, 2012

Телекомісти — мерзотні люди. Жадібні підараси, що надають хуйові послуги за єбануті гроші, GSM — єбланська технологія, замкнута сама на себе, без можливості витягнути щось назовні коли треба. Найправильніший варіант — взагалі не користуватися цим лайном, але він не завжди працює. У мене є банк, у банка є веб-інтерфейс. При перекиданні грошей з одного рахунку на інший, мені на телефон приходить СМС з кодом підтвердження. Банк у хохляндії, а я в Бангкоку. Банк не вміє (або не хоче) слати номери на нехохляндські номери. Я не хочу таскати з собою українську сімку і проїбати доступ до грошей, якщо сімка загубиться, зламається, спиздять. Крім того, перетикувати сімки мені западло — можна проїбати обидві. Крім того, їбучі телекомісти-підараси здеруть з мене за одну СМС більше, ніж я перекину грошей.

Оскільки телекомісти — підараси, вивантажувати СМС через няшне RESTове API вони мені не дозволяють. Відправляти зі свого номера через інтернет — дозволяють (з введенням капчі та єбаного пароля), а приймати — ні. При тому, що СМС все одно зберігаються на сервері, поки телефон вимкнений, технологія авторизації абонента у них є і вхідні СМС — безкоштовні. Просто всім похуй на проблеми маргіналів, які навіщось виїжджають з країни. Тому що в системі цінностей хохла, бути розумним — соромно, хотіти чогось — соромно, мати гроші і виїжджати за кордон — смертний гріх. А вирішувати чужі проблеми, та ще й за гроші — взагалі нереалізуємий творчий концепт.

Окей, я з'ясував, хто всі ці люди, але поскаржитись — не означає вирішити проблему. Для вирішення проблем у мене є руки, фріраннер і документація на API freesmartphone.org. Якщо для прийому СМС потрібна сімка і телефон, значить треба взяти сімку і телефон, залишити в хохляндії включеними в розетку і отримувати на нього СМС. Далі СМС можна читати, заходячи по ssh або редиректити на інший номер.

Фріраннер — це такий телефон, який п'ять років тому хотіли зробити адські опенсорц-задроти, причетні до проекту OpenEZX, німецького хаос-комп'ютингу, реалізації опенсорцного GSM-стека та інших тусовочок маргіналів-спеціалістів. Апарат зробили більш-менш, але софт не осилили. Три рази все переписували — від внутрішнього API (Enjoy Your DBus) до юзер-інтерфейсу, але все так і залишилося лайном навіть через п'ять років. Проект провалився, але телефон у мене залишився і виявився цілком робочим на той момент, коли мені потрібно було робити пересилку смс. Конструкція виглядає досить просто — телефон, на якому крутиться пітоновий скрипт з 30 рядків, що ловить подію приходу нової СМС і пише текст смс в логи, після чого відправляє цю ж смс на інший номер, вказаний в конфігурації (сорси є на гітхабі).

Чому фріраннер — лайно? Напевно тому, що його робили не для використання нормальними людьми, навіть не для використання гіками, на кшталт мене, в своїх дивних цілях, а просто щоб попертися від процесу створення. Все що мені потрібно було — залишити апарат включеним в розетку і мати можливість заходити на нього по ssh. Але телефон засинає кожні п'ять хвилин. У телефона є налаштування, яке контролює, чи засинати чи ні. Налаштування працює, для його зміни є гуй, але після ребуту воно скидається в дефолт, тому що збереження налаштувань ніхто так і не зробив за всі п'ять років дрочки на чистоту API і тридцять різних видів інтерфейсу. В кращих традиціях "нового дизайну" лінуксового софту, немає ніякого /etc/power.d/, в якому можна було б відмінити саспенд. В кращих традиціях того ж самого, жоден параметр довжелезного конфігу тієї хуйні, яка відправляє телефон в саспенд, не задокументований. Через якийсь час я або прохакав потрібний шматок пітонового коду (пощастило, що демон написаний на пітоні) або знайшов в якійсь вікі-помійці потрібний ключик для конфігу і саспенд перестав вилазити.

Аналогічну проблему довелося вирішувати і з вайфаєм. Як зробити, щоб сучасний лінукс, з усіма його нетворк-менеджерами, відразу після завантаження підключився до потрібної вайфай-мережі? Відповідь — ніяк. Треба винести нетворк-менеджер, написати конфіг wpa_supplicant і засунути в /etc/rc.local, після чого змусити все це барахло запускати DHCP клієнта при отриманні мережі, а у випадку фріраннера, треба ще написати десяток рядків, які вмикають живлення вайфай-чіпа. Звичайно, ніхуя з цього не задокументовано і відняло у мене пару днів копирсання — абсолютно на рівному місці.

Коли я зробив гейт, мені знадобилося зробити ще один. Другого фріраннера в мене не було, тому довелося реанімувати A1200 і ставити FS.O на нього. Після чого виявилося, що між тією версією, яка стоїть на моєму фріраннері і тією, що поставилася на A1200, охуєнно змінили АПІ. Змінили назви сигналів, змінили порядок аргументів взагалі скрізь, змінили incoming на INCOMING. В документації одне, на фріраннері — інше, а інтроспекція на A1200 показує третє. Другий девайс у мене зробити не вдалося — поки я боровся зі встановленням fs.o і вгадуванням відмінностей API, виявилося, що девайс просто йде в паніку від сильного трафіку на модемі, а піднімати версію ядра я вже не встиг.

UPD: фріраннер заїбав глючити і зависати, забрав сімку з Одеси і таскаю з собою два телефони через всю ЮВА

This entry was tagged