Psion 5mx и аппаратные развлечения с linux
Многие из вас знают легендарный КПК Psion 5mx. Он был необыкновенно популярен и был мечтой многих гиков того времени. Карманный клавиатурный КПК, легко помещается в карман. Работает от двух пальчиковых батареек, одной кнопкой полностью обесточивается. Имеет на борту CF (и на моей практике спокойно переваривал объёмы в 8 ГБ!). Машинка опередившая время.
В своё время, много лет назад у меня был ряд экспериментов: ставил на эту машинку linux, немного реверсил железо и пытался вывести её в люди в интернет. Что-то из этого удалось, что-то нет. В этой статье расскажу всё как есть. Пост будет гиковским, но немного сумбурным потому, что именно так я бодался с этой железкой.
«Ты помнишь, как всё начиналось»…
Некоторое время назад, у меня одновременно появилось два удивительных аппарата, легенды клавиатурных КПК: Это Psion 5MX и Jornada 720. Про Jornada пока нечего сказать, хотя этот КПК достоин памятника, а вот про любовь с легендарный Зышщт (это не опечатка, не надо мне писать об этом) опишу в этом посте. Напомню параметры этот КПК (спасибо f15)
Процессор: ARM710T 36 Мгц
Оперативная память: 16 МБ (32 МБ в модели 5mx Pro)
Слот расширения: Compact Flash (до 2 ГБ — это не правда, 8 кушает)
Порты: RS232, IrDA
Экран: 640×240, 16 оттенков серого, 133×50 мм
Звук: встроенный микрофон, монофонический динамик
Габариты: 170×90x23 мм
Вес: 354 грамма с батарейками
Не буду расписывать о том, какой это удивительный КПК, какие у него возможности и т.п. Вот шикарный пост «Лучший в мире клавиатурный КПК» и там можно детально почитать о самой железяке.
Лично для меня штатная ОС не представляла большого интереса. Поигрался с несколькими программами, они в результате захотели денег, и я плюнул на это всё безобразие. Вот подборочка софта по теме, а сайт www.mypsion.ru до сих пор жив! Мне по настоящему было интересна работа linux на данном КПК. Посмотрите на его параметры: ARM7 36 МГц (тридцать шесть!), 16 МБ ОЗУ. Разве что в месте на жёстком диске мы не ограничены (забегая вперёд скажу, что у меня было 4 ГБ основной жёсткий и 4 ГБ под репозитории). Это прям минимальный набор для старта, и что Linux там работает? Вы не поверите, но полноценный Debian!
Всё началось вот с этого поста, где HurrTheDurr писал код и прошивал микроконтроллеры AVR с такого вот КПК. Да, это overkill, но зато как реально круто!
Одной из особенностей и проблем данного КПК, что единственный интерфейс для связи с внешним миром был UART. Да, там заявлена ещё IrDA, но по факту и схемотехнически это был один и тот же интерфейс, который переключался одним битом. Одновременно IrDA и COM-порт работать не могли. Это главное бутылочное горлышко, которое мне сильно подпакостило. Вот диаграмма из даташита на процессор. Фактически даташит — это схема Psion 5 MX.
Как видно из документации RS-232 и IrDA — это один и тот же интерфейс UART.
ARM7100 also contains a IrDA (Infra-red data association) SiR protocol encoder. Optionally, this encoder can be switched in to the Tx and Rx signals so they can be used to drive an infra-red interface directly. For more details on the IrDA SiR protocol, see the appropriate document detailing this protocol standard. If the SiR protocol encoder is enabled, the UART Tx line is held in the passive state and transitions of the modem status or the Rx line will have no effect.
Не зря заостряю на этом внимание, любая установка пакета превращалась в квест.
Прежде чем мы поедем дальше, в процессе экспериментов у меня для опытов появилось две машинки Psion 5mx: у одного не работал COM-порт (скорее всего выгорел на уровне процессора), но кое-как работала IrDA и работал интерфейс CF-карты, у другого работало всё, кроме интерфейса CF (поэтому для опытов с linux он был не пригоден). Так же потом у меня появилась материнская плата вариации Psion Ericsson, которая так и не смогла запустить на своём борту linux. Короче говоря, полноценного рабочего КПК у меня в руках никогда не было, поэтому это был своеобразный квест боли и унижений.
Как поставить linux на эту крошку?
Удивительно, что обычно по старому железу ходишь по тысячам битых ссылок. Но даже сегодня все ссылки работают, и вполне можно пройти весь этот джедайский путь, если есть железо. Сам linux для Psion живёт вот тут. Там же и подробнейший мануал по установке.
Если вот совсем кратко, то минимально для установки достаточно CF на 256 МБ. Но лично я рекомендую взять флешку на 8 гигов, 4 из которых отвести под репозитории. Для его загрузки запускается Arlo — это загрузчик, который устанавливается на досовский раздел. Все файлы обитают вот тут.
а самая флешка, с образом linux
Изначально, после установки Linux ты пытаешься поставить пакет. Но у тебя нет выхода в интернет, никакого, ни в каком виде. И вот ты вручную качаешь пакет, удовлетворяешь зависимости, каждый раз вытаскивая CF и переписывая нужный пакет, который качаешь с сайта archive.debian.net/woody/allpackages (к сожалению пакеты Debian таки погибли, но надеюсь их можно где-то скачать).
В результате я психанул, разбил флешку на два раздела (точнее на три, на первом раздел dos, для загрузчика). И во втором разделе сделал локальный репозиторий. И 4 гига всех возможных пакетов там чудесно разместились.
В результате можно даже установить gcc и не спешно писать свои программы.
Реверс инжиниринг железа Psion
Для тех кто, как и я решиться заниматься реверс инжинерингом psion есть несколько полезных реурсов. Главный — это конечно Service Manual. Крайне полезный документ по разборке и работе.
Так получилось, что подсветка на этом экземпляре Psion была практически умершей. И я думал, какие способы её заменить. Существует в китае электролюминесцентная бумага, из которой можно сделать готовую подсветку. Для этого я решил отреверсить схемотехнику питания подсветки. Существует большой проект нашего соотечественника, который реверсил Psion Revo (это более дешёвая версия Psion, по моему даже без CF). И у него есть сайт, на удивление даже живой. igorkov.org/psion. Там он увеличивал количество ОЗУ, реверсил сигналы и т.п. И я взял его мануал по реверсу материнской платы igorkov.org/psion-rev. Всяко рекомендую ознакомиться всем небезразличным к железу. Для меня наибольший интерес представляла табличка разъёма LCD. Обращаю внимание, что у меня несколько другая модификация, но информация оказалась мне полезной.
Меня интересуют те сигналы, которые не используются в данной модификации Псиона. Для этого разбираем Psion
Разбираем наш Psion 5 MX и можем посмотреть материнскую плату внутри.
Любопытно свободные площадки под ОЗУ, и флешка вместа ПЗУ.Т. е. гипотетически можно записать за место оси свою операционку. Если вы посмотрите гайды, то экран расползается бутербродом. И шлейф от экрана один.
Тут два шлейфа, но один глухой. А экран выполнен моноблоком. И с другой стороны выглядит вот так
Тыльная сторона экрана в терминальной стадии разборки
Экран внутрях
На материнке видать кучу-просто тонны тестовых падов. Но из-за нехватки времени оставил их прозвонку другим любителям старины. Уверен на сто процентов, что там есть свободные пины PIO, которые можно испльзовать. Но я решил сосредоточится на проблеме подсветки и отреверсить её.
В общем с подсветкой суть такова, я уже приводил табличку с реверсом Ревы. И там был разъём дисплея такой же как у Psion 5 mx и в данной таблички отсутствовала информация о контактах подсветки (у ревы нет подсветки). Оглядев плату, находим рядом стоящую с разъёмом микросхему HV823, беглое прозванивание дало результат, что одна ножка (26) идёт прямо на неё. Гуглим даташит на данную микросхему. И опа, оказывается, что эта микросхема как раз отвечает за подсветку. Согласно установленным делительным резисторам, скорее всего схема подключения следующая:
При дальнейшей прозвонке схема совпала полностью (индуктивность и ёмкость измерить нечем), выгляит всё так:
Сверим всё приборами.
Амплитуда составила 65 В, а вот синхронизировать изображение на осцилоскопе не удалось, поэтому снимал значения уже с фотографии:
Осцилограмма 10 В/дел ,1 мс/дел
Частота вышла 250 Гц, что меня смутило. Решил проверить частотомером (ну мало ли, глазам не верю). В результате вот такие тёплые ламповые значения:
Значение на тёплом ламповом дисплее в кГц, и равно 252 Гц.
Отличие от даташита могу объяснить тем, что может какие-то другие параметры схемы раз, либо очень большая ёмкость проводов, и частоты поплыли.
Результирующая табличка выглядит вот так:
Короче говоря, параметры подсветки 65 В на 250 Гц.
После этого, я начал в китае искать EL-панель размером 144×62 мм, с такими параметрами питания. Самое забавное, что стоимость таких панелей порядка 1500–1800 рублей (если брать А4 под резку), и в Китае заказывать не сильно дешевле, как ни странно.
Но судьба распорядилась иначе, и у меня появилась новая подсветка и ещё материнская плата от Psion Ericsson MC 218.
Новая материнка и подсветка.
Лёгким движением руки Psion превращается в Ericsson
Было бы грешно не попробовать заменить материнскую плату с одного КПК на другой. Тем более, что внешне их было не отличить. Это материнская плата от КПК Ericsson MC 218 . Как я понял — это просто какая-то модификация прошивки, а так по сути это тот же самый Psion (но не тот же).
Две материнки. Угадай где какая.
Больше всего боялся забыть где какая материнка. Как две капли, но отличие есть в форме кнопочек. В остальном — полное совпадение. Встала как влитая. Первый запуск дрожащими руками:
О мой бог! Интересно jar-ы работают?
После окончательной загрузки выглядит всё вот так:
Делал очень большую ставку на данную материнскую плату, так как там нормальный разъём CF и рабочий СОМ-порт, в общем будет счастье. Но, увы… Оказалось что система не видит больших CF-носителей. Ни 2, ни 4, ни 8 ГБ :(. Пришлось мать менять обратно. Была даже мысль махнуть ПЗУ с одной материнки на другую, но тогда не было опыта. А сегодня нет КПК для экспериментов.
Поясню, почему важно было видеть большие CF: Linux работал только на них.
Выходим в интернет
Как вы помните, у меня фактически был единственный аппарат с linux на борту, но даже у него не работал СОМ-порт. Мне удалось даже спаять СОМ-портовый шнурок (по этой схеме), но конкретно с этой моделью он не работал. Скорее всего, там не работал именно пин процессора.
Самодельный шнурок для Psion 5MX
При том, при прозвонке оказалось, что не работает только одна линия TX. То есть принять данные он может, а вот отдать — нет. Пришлось искать другие варианты.
Для этого я начал разбираться с IrDA. Изначально пробовал IrDA такого типа.
Но в Linux на ПК работать с таким ИК-портом было полное боль и унижение. Вообще подсистему IrDA под линукс писали бутиратовые наркоманы, и понять без веществ как ей пользоваться было ровным счётом невозможно, и такое ощущение, что её не дописали и просто бросили за ненадобностью.
Поэтому начал искать другие варианты. Мне удалось найти очень необычный ИК-порт, который по сути делал UART по ИК-каналу, без всяких высоких материй, что мне было и нужно. Там было всего две микросхемы: FT232BM (USB-COM) и MCP2120.
Удивительный пепелац, практически самоделка на ЛУТ, но оказалась полноценным решением. Его тоже пришлось реверсить и разбираться, что же с ним не так, и на каких скоростях он работает. Оказалось, что он может работать только на скорости 9600.
То есть по факту это выглядело как работа с UART, и на стороне КПК Psion под Linux я тоже работал с UART (только ИК-порта), и да, оно даже работало!
И да, не сверхстабильно (чуть сдвинул и всё), но это таки работало! Надо было ещё корректно выставлять DTR и RTS для этого поделия, но я справился.
В результате мы получили нульмодемное соединение, как оно есть. И помню, что я потратил ещё пару недель чтения мануалов, чтобы нульмодемное соединение вывести в люди. И создал ppp-соединение с помощью, по моему программы wvdial (не помню точно), HurrTheDurr не подскажешь? Ну суть в том, что эта штука, которая не знала даже что такое интернет, в него вышла!
Простите за мыльное фото…
Крутость фотографии выше просто зашкаливающая. Дальше мы сделали jabber чат с HurrTheDurr (оба с Psion 5 mx), и порадовались успеху.
Чем кончилось дело?
Pison очень крутая штука, но выводить его в интернеты по средством компьютера большей мощности было как-то странно, что ли. И я долго искал возможность вывести его с помощью esp8266. И даже на hackaday встречал вот такой любопытный проект. Проблема в том, что непонятно как заставить работать esp8266 как ppp-модемное соединение. Искал много проектов, которые могли бы это реализовать, но не нашёл. Так и плюнул на эту затею. В результате в приступе очередной хандры роздал бесплатно все свои железки и больше к этому вопросу не возвращался…
Хотя, мне честно интересно, как вывести через СОМ-порт устройство в wifi, и чтобы решение по размеру помещалось бы прямо в корпус Psion. Хотя идеи, конечно же есть (например SD-WIFI-карта).
Если говорить о linux для Psion, то проект конечно сырой, и где-то даже глючный. Но он был рабочим, и им даже можно было пользоваться, при должном терпении (на 36 МГц надо иметь большое и крепкое терпение). Короче говоря, если вы хотите развлечься как гик, вы знаете что делать.
Полезные ссылки по теме:
Главный наш сайт псионячего софта www.mypsion.ru. Дай плюсов в карму его создателям и держателям!
Распайка кабеля: nathan.chantrell.net/linux/psion-series-3-to-unix/make-your-own-psion-serial-cable и wookware.org/psion.html
Различные мануалы по разборке устройства:
it.ifixit.com/Teardown/Psion+5+Teardown/1650
www.mypsion.ru/library.php? aid=868&page=1
www.r3uk.com/index.php/tech-tips/34-disassembly-guides/9-psion-series-5mx-disassembly-and-screen-cable-repair
netti.nic.fi/~jmietti/pda/psion5rep1.htm
Мануал на процессор: infocenter.arm.com/help/topic/com.arm.doc.ddi0035a/DDI0035A_7100_prelim_ds.pdf
Проект linux для Psion linux-7110.sourceforge.net