LINUX.ORG.RU

Сообщения ncrmnt

 

Дачная лаборатория

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

Оборудование (основное):

  • Asus N75SF (Доживает свои дни на даче)
  • HP Envy 13 (Текущая рабочая машинка)
  • 3d-принтер Flying bear P902
  • Паяльная станция Lukey 702. Только сейчас понял, что ей уже 15 лет. Ну и оловоотсос китайский в добавок.
  • Осциллограф: Rigol DS1052E. До 100Мгц я его так и не разогнал, т.к. не было надобности.
  • Камеры: Над осциллом дешевая китайская yoosee с PTZ. Включаем RTSP, режем доступ к облаку на роутере, профит. Еще по участку в роутеры на OpenWRT (их 4 штуки, между ними гигабит, роаминг через 802.11r) воткнуто несколько старых веб камер, отдающие поток через mjpeg-streamer. Недавно добыл для экспериментов две xiaomi dafang на которые ставится прошивка dafang-hacks. Пожалуй, на этом варианте и остановлюсь.
  • Управляющие устройства для homeassistant: Тут сборная солянка. Часть - мои старые проекты на nrf24l01, часть на esp8266 с esphome (некоторые мои платы, некоторые готовые девайсы от sonoff перешитые esphome). Дополнительно по дому выключатели xiaomi aqara и некоторые датчики из этого комплекта, которые работают через zigbee2mqtt. Облака? Шпионаж? Нет, не слышали.
  • Освещение: Из-за потолка под скатом крыши, поставил светодиодные ленты. Ими управляют мои самопальные модули, плавно зажигающие и гасящие их.

Софт:

  • Octoprint (веб-интерфейс для 3д-принтера)
  • cncjs (веб-интерфейс для станка с ЧПУ. Иногда приходится юзать bCNC, так как autolevel’инг в cncjs уже который год никак не допилят)
  • shinobi (сервер видеонаблюдения. Пока только разворачиваю, думаю попробовать его сдружить с аппаратным m2m mfc на exynos в odroid-x2).
  • wireguard - соединяет дом и дачу в одну локальную сеть. С тех пор, как провели оптику пинг от дачи до дома 4 мс.
  • Steam - использую, чтобы иногда поиграться. Видеокарта стоит в сервере дома, на дачу идет стрим. Задержка 20-30мс, что вполне достаточно.
  • Роутеры: Везде исключительно OpenWRT с типовой для меня конфигурацией.
  • Homeassistant - собственно, пульт управления для умнодома.
  • Chef - конфигурацию всех одноплатников под все задачи давно перестал делать руками, решил перейти на chef. Сейчас в процессе активного осваивания рубей и переписывания на нем всего и вся.
  • Jenkins - по расписанию собирает ночью OpenWRT с типовой конфигурацией и деплоит на роутеры. Вот такие вот хардкорные обновления.

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

Самое главное, что есть - удаленное управление, которое позволяет отправить задачи на 3д-принтер/станок с чпу, что займут много времени и шума, а когда приедешь на дачу просто снимаешь готовый результат и не тратишь время.

>>> Просмотр (1920x2530, 1784 Kb)

 , , ,

ncrmnt ()

Proxmox на десктопе

На скриншоте самый обычный проксмокс в кластере с двумя узлами, который развернут у меня дома. KDE установлен на этот же proxmox, в нем запущен firefox, а в firefox открыта веб-морда proxmox. Такая вот рекурсия.

Предыстория

Не так давно собрал себе бюджетный сервер на Xeon e5 2660v2 под хранилище виртуалок и контейнеров. К сожалению, так как потребности в вычислительных мощностях серьезно выросли за последний год, обходится парочкой Odroid-X2, как в старые добрые времена уже не могу, да и старенький HTPC на хасвелле с пассивным охлаждением с нагрузкой не всегда справляется, особенно летом.

Изначально думал собирать на TR4 1950x, но проконсультировавшись с жабой решил собрать бюджетную конфигурацию на LGA2011 и дополнить ее AMD RX580 в виде видео.

На сервере раскатал proxmox, куда мигрировал все свои виртуалки, и который мне пришелся очень по нраву. Для стима развернул виндовую виртуалку, куда пробросил физическую видеокарту.

Встал вопрос обслуживания, так как в отличие от пассивного охлаждения этого монстра надо чистить регулярно, а глушить виртуалки не всегда удобно. Именно поэтому я раскатал на десктопе еще один proxmox и объединил с основным в кластер. Графический интерфейс накатил без всяких контейнеров и виртуалок на proxmox. Все равно под капотом это привычный и любимый мною debian.

Такая конфигурация позволяет мне временно мигрировать виртуалки на десктоп без остановки системы, чтобы почистить сервер от пыли.

Конфигурация десктопа:

  • i7-4560U
  • 16 GB RAM
  • 128GB + 256GB + 256GB SSD

Конфигурация сервера:

  • Материнка X79 PlexHD ~100$
  • Xeon e5 2660v2 ~100$
  • 64GB DDR3 ECC RAM 1866 ~200$
  • 2U корпус от Etegra (подарили, 1U БП с резервированием, бэкплейн и прочее пришлось выкинуть, а сам корпус доработать напильником и 3д-принтером.)
  • 2U тихий блок питания 500W (~6.5к рублей)
  • 16Gb Optane M.2 (~2.8k рублей)

Жесткие диски переместил из NAS’а и старых компов, докупать пришлось только оптанчик.

Хотя по количеству вышел (имхо) небольшой перебор:

1x1 Tb SSD для системы 2x6 Tb зеркальный рейд для данных 2х1 Tb полосатый рейд с bcache на оптане - площадка для сборки разного софта. Только при сборке на нем проектов типа OpenWRT/linux, удается выгрузить все ядра на 100%. Без кеша на оптане все упирается в I/O и больше 30-40% загрузить не выходит.

Также в новости про Stadia интересовались задержками при стриминге через steam. Собственно, дублирую замеры сюда:

На тесте было тупо главное меню subnautica:

  1. Софтварный энкод в 6 тредов + софтовый же декод на хасвелле: 59fps@1920x1080 задержка видео 33 мс.

  2. Софтварный энкод в 6 тредов + декодирование через QSV - 22 мс, те же 59 fps.

  3. Аппаратный AMF энкод + декодирование через QSV - 29(!) мс.

Соединение - гигабитный линк по меди через роутер.

По количеству потоков программного кодирования: 1 поток - неиграбельно 2 потока - 50 мс и 19 fps 3 потока - 30 fps, 35 ms лаг 4 потока - 30 fps, 30 ms лаг 6 потоков - 60 fps и 21 ms лаг

Вывод: программное кодирование в большое (6+) количество потоков даст лучше и по задержкам и по качеству, чем аппаратное.

В общем как-то так. Ядра выжираются почти полностью 67% от 10 ядер судя по веб-морде проксмокса. Дополнительная погрешность от VNC и самой субнаутики.

TODO:

  • Замеры энергопотребления
  • Прикрутить vagrant к контейнерам proxmox
  • Осилить chef
  • Мигрировать все веб-приложения из виртуалок в контейнеры, попутно переписав все развертывание на chef, вместо ручной настройки. Это должно сделать автообновления всего этого добра намного проще в теории. (Сейчас там все в основном на debian stable с автоапдейтами и большей частью живет на автопилоте не требуя вмешательства, кроме ритуального обновления iredmail)

>>> Просмотр (1920x1080, 238 Kb)

 , ,

ncrmnt ()

Злобный ble токен с nRF52832

Собственно, оставалось немного пустого места на текстолите, решил туда воткнуть ближайшего злобного пингвина. Платка ничего особенного из себя не представляет - всего лишь экспериментальный BTLE токен на nRF52832 со встроенным LiPo зарядником от USB, ярким RGB светодиодом, местами для подключения трех прецизионных термисторов, да SPI флешкой. Если идея взлетит, планируется дополнительная нахлобучка с BMD101.

>>> Просмотр (2304x1728, 1880 Kb)

 , , ,

ncrmnt ()

Кластер из старых китафонов на базе Debian Stretch

Давным давно я покупал всей семье аппараты UMI-X2 (mt6589). Время этих телефонов прошло, апдейтов на них уже не прилетит, некоторые трубки частично убиты. К UMI-X2 еще и добавился еще и мой старый iOcean-X8 (mt6592) с убитым SIM-слотом. Выкидывать весьма производительные железки мне не хотелось, потому я сделал для аппаратов кастомные ядра и портировал Debian Stretch.

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

Бокс отпечатан из пластика PLA, крышка держится на пазах+магнитах. Сверху стоит вентилятор, под ним проложен фильтр от пыли, между «этажами» предусмотрены отверстия для вентиляции. На дне дырки, через которые выходит воздух.
В виде ножек использованы силиконовые антиударные самоклеющиеся накладки для мебели, которые легко можно купить в любом леруа.

Время печати всего удовольствия - около 30 часов на моем Flying Bear P902. Моделировал в SolveSpace.

Каждый аппарат по USB определяется как композитное устройство в составе которого: сетевая карта (cdc-eem), виртуальный последовательной порт с консолью и usb mass_storage (если потребуется прямой доступ к SD/eMMC).

На данный момент аппараты планируется использовать как ферму для сборки debian-пакетов под arm через Jenkins CI. Тут два варианта: если удастся завести docker, то узлы будут эквивалентны, с контейнерами под debian armhf/armel и raspbian armhf. А если нет - то на каждый аппарат по своему дистру. Нет только аппарата на aarch64, но что-то подсказывает мне, что если второй раз разобью экран своего K6000 Pro, будет и эта архитектура в этой чудной зомби-ферме.

Кстати, за время с прошлой новости, я добавил в MediaDeb поддержку WiFi для UMI-X2, перевел систему сборки проекта на cmake, добавил в ядро все необходимое для поддержки iotop, оптимизировал систему для работы с еMMC и еще сделал много мелких доделок, включая еженедельные сборки для поддерживаемых аппаратов. А еще сделал бенчмарки

>>> Просмотр (1920x3237, 2079 Kb)

 , ,

ncrmnt ()

NextCloud + RainLoop

Все же решил перейти с owncloud на nextcloud. Миграция прошла на удивление безболезненно, ничего практически не отвалилось. Помимо стандартного набора приложений у меня в виде external интегрированы rutorrent и urlwget-gui-light.

Скриншот с wget gui

На телефоне (android) используются:

  • ownnote
  • davdroid
  • mytasks
  • owncloud news
  • Штатные приложения для контактов и календаря

Из впечатлений после перехода:

  • Резко ускорилась синхронизация десктопным клиентом большого количества мелких файлов (синхронизирую конфигурационную директорию редактора atom между компами)
  • Наконец-то теперь есть режим filedrop на каталог.
  • Rainloop теперь не приходится обновлять руками.

Грабли:

  • После того, как накатил nextcloud в apps/ (равно как и appstore) не оказалось приложения external, пришлось устанавливать руками.
  • Отвалился ownnote, отображается некорректно, автор обещает в скором времени починить.
  • Аудио плеер на большой музыкальной коллекции практически неюзабелен, album-view не загружается.
  • При использовании ldap, чтобы работал авто-логин в rainloop как и раньше приходится править базу и переименоввывать каталоги для нового пользователя. Хорошо, что у меня пользователей немного и резкого роста аудитории не планируется.
  • Как и раньше, из-за реюза пароля при логине по imap rainloop'ом остается загадкой, как корректно прикрутить к этому делу двухфакторную аутентификацию через yubikey.

>>> Просмотр (1920x1080, 349 Kb)

 ,

ncrmnt ()

Мой клон YubiKey с блэкджеком: SkeletonKey-R1

На картинке виден первый собранный и даже работающий прототип сабжа. Оный все же удалось сделать достаточно узким, чтобы он не мешал воткнутому в соседний порт кабелю. Слоупочта сингапура в этот раз прослоупочила и плат я ждал больше месяца. Предыстория: В РФ не завезли юбикеев, я психанул и запилил свой. Как только отлажу фирмварю - выложу все в опенсорс и сделаю детальное описание.

Кастую интересовавшихся: Krieger_Od, true_admin

Фичи:

  • 4 кнопки на каждую из которых можно повесить действие
  • Аппаратный генератор случайных данных на зенер-диоде
  • 2 RGB светодиода, которые можно использовать для уведомлений/moodlight/etc
  • Встроенный загрузчик для обновления фирмвари по USB

На каждую кнопку можно повесить один из трех режимов:

  • Режим YubiKey-OTP
  • Режим Replay (отправка по нажатию на кнопку записанной последовательности клавишь)
  • Режим генерации «красивых» хостнеймов (Если вдруг подведет фантазия)

Главный косяк первой ревизии - нужен корпус. Мембранные кнопки без корпуса полное УГ, сама мембрана легко может отвалиться, для нажатия надо придерживать снизу что может «навести» на соседние кнопки.

DR_SL, твои навыки моделлинга во FreeCAD'е все еще так же круты, как и раньше?

>>> Просмотр (2048x768, 555 Kb)

 , ,

ncrmnt ()

Базовая платка для Android TV стиков

Так как в хозяйстве для автоматики использую Android TV Стики, вместо унылого (в плане корпусировки, размеров, ровно как и производительности) rPI решил сделать базовую платку. Результат виден на картинке.

На борту импульсник на 3А чтобы питаться от 12-24 вольт, USB Hi-Speed hub на 4 порта (на одном висит микроконтроллер), (на двух задних USB портах, можно щелкать питание), 3 релешки, 8 свободных ног.

Ноги могут работать как GPIO, либо рулить 8ю сервомашинками - в виде микроконтроллера используется ATTiny2313 с vusb стеком. 100% не содержит вредной для здоровья arduino.

Больше хайрес фоток тут (Там же есть рисунок с шелкографии в PNG и цвете).

Прошивки для мк: тыц и тыц

>>> Просмотр (2400x674, 799 Kb)

 ,

ncrmnt ()

Корпусируем BPi R1 (ака Lamobo-R1)

Просили рассказать что и как, как приедет железяка. Собственно, спустя полтора месяца приехала. Брал на адиэкспрессе, рассказываю.

TL;DR: Косяков в дизайне навалом, акриловый корпус убог, OpenWRT пашет с QoS'ами и VLAN'ами, при правильном приготовлении - лютый вин.

Теперь подробнее. Что мне не понравилось - нет в комплекте IPX<-->SMA косичек и антенн. Для меня не критично, я человек запасливый, но для многих может оказаться шоустоппером.

Вот все, что приехало

Начнем с хорошего. Бредкомовский свитч, которого я опасался внезапно работает, и вроде бы неплохо. Есть VLAN'ы, QoS и прочие радости. Есть поддержка всего этого добра в транке OpenWRT. OpenWRT вообще на выхлопе генерит образ для SD карточки, что не может не радовать. Ядро 3.18.6, мейнлайн. Работает SATA, есть разъем для LiPo батарейки. Если вырубают на даче свет - у этой штуки, считайте, встроенный бесперебойник. rtl8192cu завелся без проблем, в том числе и в режиме точки доступа в N режиме с полосой 40Mhz, сигнал отличный.

Корпус из акрила убог. Очень Убог.

Я даже не стал снимать защитную пленку с акрила, так что если кому нужен такой корпус - отдам ровно за столько, засколько сам взял у китайцев.

Теперь о косяках.

  • Аккумулятор (в комплекте нет, сойдет любой LiIon на 3.7 В) сажается в XH-2 2.54mm разъем. Если HDD воткнут - аккум уже не воткнуть, надо разбирать. Положение разъема очень неудачное. В стоковом корпусе под него нет места.
  • Жесткий диск не вытащить не снимая боковую стенку корпуса.
  • Питание исключительно через microusb разъем. Нет ОТК на этих содомитов. Даже если разъем протянет 2А (В жидком азоте если только), (грубо) 500мА жрет зарядка аккума, 500мА по спекам что-то воткнутое в USB (а их там у нас 2, считая OTG), еще 500-600мА жесткий диск. И это не считая broadcom'овского свитча с интегрированной физикой. 5 гигабитных портов это вам не диодиком мигнуть и сам SoC. Впрочем, при питании через microusb у меня даже жесткий диск не раскрутился из-за падения на проводах. Поскреб напильником плату, подпаял JST шнурок, все заработало.
  • Родной корпус не обеспечивает нормального охлаждения свитча, а он греется весьма, даже без трафика. Гигабит же!
  • Плата крайне тонкая и будет деформироваться, особенно под весом жесткого диска!
  • Sysupgrade на OpenWRT при загрузке с SD (ext4) не работает. squashfs образ не делает по дефолту rw оверлея, с этим еще предстоит разобраться.
  • Пин который управляет питанием HDD по дефолту в режиме «вход», в нем и остается, HDD без хаков не раскручивается.

С этим надо было как-то бороться, потому я быстро и решительно взял припасенный для другого проекта корпус из люминия и начал экзекучию. Посадил 3 отрезных диска для гравера, покрылся стружкой - но сделал вырез для ethernet'ов сбоку. На оба microusb забил - все равно на мейнлайне inventra'вский musb заводится с кровавыми патчами и без DMA.

Разметил боковую стенку, засверлил и смотрировал туда два SMA разъема. Встали как родные.

Далее по месту засверлил корпус, нарезал резьбу и вкрутил стойки, шедшие в комплекте. С обратной стороны торчащую резьбу срезал гравером и подшлифовал, чтобы не торчало.

Все, конструкцию можно собирать. Свитч расположен снизу, потому я в этом месте сделал охлаждение на корпус. Заодно еще одна точка опоры в центре - не будет так прогибаться от жесткого диска. Так как одного USB мне показалось мало, а хаб был под рукой только на 4 (мало) и 13 портов, после процедуры укорочения кабеля приклеил на двусторонний скотч 13-портовый хаб.

TODO:

  • Починить sysupgrade.
  • Вывести уровень заряда батареи на dashboard в OpenWRT
  • Подобрать и вывести разъем для питания и батареи на торец. Есть шальная мысля заюзать PS/2 со старой материнки, который с клеплением к корпусу, на него же вывести и UART. Но это надо будет еще думать.
  • Настроить OpenVPN, pppoe, и прочие радости жизни, прогнать iperf.
  • Придумать для чего использоваться место на этом жестком диске. Пока напрашивается туда повесить apt-cacher или squid.

Задавайте свои вопросы. Больше фоток - тут http://pics.ncrmnt.org/index.php?album=junk/lamobo-r1/ Качество некоторых фоток фиговое - их снимал на голову ведьмы старый китафон.

>>> Просмотр (2000x1124, 757 Kb)

 , ,

ncrmnt ()

ajenti @ UMI X2

Нашел время, доработал это извращение. Наглядный пример зачем в современном мобильнике 4 ядра и 2GB RAM. Собственно, на скриншоте ajenti, который торчит из моего старого UMI X2 с разбитым экраном. Так как экран на ладан дышит, а новый экран стоит как новый аппарат, я взял другой телефон, а этот приспособил на чердаке на даче для раздачи интернета.

На борту стоковый android (ядро тоже родное) с root'ом, из которого вычищено все, что только можно, включая google play services. Из софта только smanager, который запускает при загрузке аппарата скрипт, который запускает debian в chroot'е и дергает chroot окружение каждый раз, когда меняется состояние мобильной сети.

В chroot'е живет OpenVPN, stunnel, squid, iptables со стопкой правил, ssh, ajenti и самописная прога, умеющая отдавать фотку по запросу, а так же куча скриптов всех цветов и расцветок. (Ходили слухи, что будет и на нашей улице DPI, решил превентивно разобраться с stunnel. На практике дает много оверхеда).

Так как интернет на даче через мобильную сеть, прямого IP нет, приходится держать OpenVPN до VPS'ки с включенной компрессией, чтобы можно было удаленно наблюдать за курочками^W^W^W администрировать дачную сетку.

Помимо OpenVPN стоит squid с прозрачным редиректом всего траффика через него и жирным кешем на быструю 32GB SD карточку.

Родной «tethering» не используется. Вместо этого скрипт запуска chroot окружения делает вот так:

echo 0       > /sys/class/android_usb/android0/enable
echo rndis,adb > /sys/class/android_usb/android0/functions

А уже debian'овский chroot получает IP штатными средствами. Воткнут телефон в OpenWRT роутер. Изначально, все было на нем, но связка OpenVPN+stunnel оказалась очень жручей до CPU и сжирала 600Mhz MIPS уже на 5-6 мегабитах, если не меньше. Здесь такого боттлнека нет. Да и сеть телефон держит ВНЕЗАПНО лучше 3g модема.

Изначально оверхед от OpenVPN по tcp был где-то 60%, после долгих мытарств, увеличения TCP окна и добавления в конфиг волшебных строк

tun-mtu 1500
mtu-disc yes
txqueuelen 15000
Все стало намного лучше, оверхед стал где-то 20-30%. Пинг без OpenVPN был 80-100ms, с OpenVPN - 150-200ms. TCP_NODELAY в разных местах stunnel уменьшает время пинга, но здорово увеличивает оверхед, потому не используется

Все расписывать будет очень долго, потому отмечу самые нетривиальные хаки:

1. При выключенном экране телефон находится в easrlysuspend (ЕМНИП) и никогда не будет включать вторичные ядра, даже если на 100% загрузить доступное ядро. Потому в настройках девелопмента надо выставить «не гасить экран при подключенном кабеле». Экран он гасить не будет, и в earlysuspend уходить не будет. Сам же экран я гашу в стремном keepalive скрипте, который по крону запускается каждую минуту:

#!/bin/bash
N=`route -n|grep tun0|wc -l`
if [ "$N" -eq "0" ]; then
        route del 127.0.0.1
        route add 127.0.0.1 dev lo
        mkdir /dev/net
        ln -sf /dev/tun /dev/net/tun
        /etc/init.d/stunnel4 restart
        /etc/init.d/openvpn restart
fi

echo 0 > /sys/devices/platform/leds-mt65xx/leds/lcd-backlight/brightness

2. Каждое изменение состояния сети android убивает все маршруты и заполняет таблицу заново, потому помимо крона этот же keepalive вызывается и smanager'ом

3. Напряжение батарейки, температуру батарейки и температуру SoC'а можно прочитать в /sys. Так как у меня медиатек - ajenti это не подхватывает, приходится читать ручками:

Температура батарейки: /sys/devices/platform/mt6320-battery/power_supply/battery/batt_temp

Напруга на батарейке: /sys/devices/platform/mt6320-battery/power_supply/battery/batt_vol

Напруга проводе воткнутом в телефон: /sys/devices/platform/mt6320-battery/power_supply/battery/ChargerVoltage

Ну и

/sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/temp

Для чтения температуры самого SoC'а.

3. usb0 добавлен у меня в br-lan на роутере, вместе с остальнымим портами, для br-lan интерфейса является маршрутом по умолчанию. Хитровыдолбанную настройку DNS и маршрутизации расписывать не буду, лень.

4. На скорость крайне положительно влияет нижеследующее заклинание, немного меняющее настройки буферов для TCP и прочего:

echo "0" > /proc/sys/net/ipv4/tcp_timestamps
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "1" > /proc/sys/net/ipv4/tcp_sack
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout 
echo "404480" > /proc/sys/net/core/wmem_max
echo "404480" > /proc/sys/net/core/rmem_max
echo "256960" > /proc/sys/net/core/rmem_default
echo "256960" > /proc/sys/net/core/wmem_default
echo "4096,16384,404480" > /proc/sys/net/ipv4/tcp_wmem
echo "4096,87380,404480" > /proc/sys/net/ipv4/tcp_rmem

5. OpenVPN не оживет по дефолту, так как /dev/net/tun в андроеде виден как /dev/tun. решается парой строчек:

mkdir /dev/net
ln -sf /dev/tun /dev/net/tun
Лучше запихнуть в keepalive - раз в сутки оно куда-то пропадало у меня.

Задавайте свои вопросы. Все вышеуказанное было настроено за один вечер под действием отборного кофеина, советы экспертов по тонкой настройке OpenVPN на 3g канале приветствуются. ;)

>>> Просмотр (1920x1080, 136 Kb)

 ,

ncrmnt ()

Обстановочка

Собственно, вылупились. Из 53х яиц в инкубаторе пока вылупилось только 4. Один шабо (на фото), остальные ломаны брауны.

На фотографии: debian wheezy, xemacs, asus n75sf и цыпленок шабо, которому сейчас уже около суток.

>>> Просмотр (1280x960, 460 Kb)

 

ncrmnt ()

mediawiki в виде базы данных компонентов

Некоторое время пользовался tracmor'ом, но теперь он меня в концы задолбал. Долго думал над решением, 1C.Склад - это не наш метод (c), в итоге в голову пришла гениальная мысля заюзать для этого дела mediawiki.

Собственно, сказано сделано, за вечерок раскатал у себя, пока на лаптопе, накатил DynamicPageList, msUpload, ParserFunctions, раскурил их язык шаблонов, запилил плашечки в стиле лурка...

Исходник странички на скриншоте выглядит примерно так:

{{USSR}}
{{box|R1}}
[[Category:Thyristor]]
{{COMP|2У102В.jpg|:File:radioelpribori_ru_2u102a_2u102b_2u102v_2u102g_ku102a_ku102b.pdf|Тиристор}}

Факт вхождения компонента в коробку фиксирую добавлением в соответствующую категорию, на странице которой темплейтом через DPL генерирую россыпь QR кодов для каждой ячейки бокса. На лейбле имя компонента и QR ссылка на страницу в вики, что очень удобно.

Сетап получился несекурный, потому наружу открывать не буду. Проблема раз - QR коды приходится тянуть с гугловских чартов, вменяемого плагина для медиавики нет - только один нерабочий. Проблема два - для некоторых компонентов, например импульсных преобразователей, хочется воткнуть тупой js код с калькулятором, что тоже невесть как секурно. Чего пока не хватает/не знаю как сделать - это параметрический поиск. Мне не критично, но был бы совсем шик. И без того сильно удобнее tracmor'а - можно добавлять к компонентам быстро свои заметки/результаты успехов/фейлов и прочее.

>>> Просмотр (1920x1080, 273 Kb)

 , ,

ncrmnt ()

Самопальная RF-управляемая розетка

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

На борту atmega328 (Если влезет по размеру кода, поставлю атмегу8, ибо пин-совместимо), к которой подключена релешка для управления 220 вольтами, ACS712 для измерения потребления нагрузки, nrf24l01+ модуль, RGB светодиод, место для подключения емкостного выключателя (сойдет любой кусок фольги, отлично работает и через крышку коробки), электретный микрофон с тупым предусилком на одном NPN транзюке (эту часть я закинул больше ради лулза, посмотреть насколько паршивый звук получится записать АЦПшкой атмеги с таким примитивным предусилком). В этот раз я заложил место под кварц, и даже напаял 16Mhz кварц. Не известно успеет ли оно раскачать микрофон и сливать аудиопоток по радиоканалу на 8Mhz. Скорее всего успеет, но решил перестраховаться.

Особенно упоролся с питанием. Так как эта штука работать будет в стендбае, то трансформатор взял отечественный ТПГ-1 от Транслед'а. (Оказывается у нас трансформаторы делают!!1111) Выбрал их ибо они выживают даже если вместо 220 ВНЕЗАПНО будет 380, пожаробезопасны и вообще Фен Шуй и Дзен.

По сравнению с незалитыми эпоксидкой китайцами, которые после долгой работы начинают греться и вонять (ищите их в дешевых блоках питания), небо и земля.

Впрочем от перенапряжения защитил на всякий случай связкой плавкий предохранитель + варистор, которых схлопывается и вышибает предохранитель уже на 270 вольтах. За ним диодный мост КЦ405А (да, такой огромадный. Просто у меня их... хм, с запасом, девать куда-то надо), а далее уже небольшой импульсник на МС6403 (классика, так сказать, жанра).

Напряжение входа перед импульсником измеряется ножкой атмеги.

На нагрузку так же воткнул предохранитель. Оных тут два, в модных BLX-A коробочках. Судя по спеке релешка тянет 10А 220AC, но так как я китаезам не верю воткнул предохранитель на 5А. Токоведущие дорожки продублировал на двух слоях.

Пока только собрал первый вариант и прошил rf24boot, еще не проверял толком, может в процессе еще какие косяки будут.

Бонус: Фотка девайса в корпусе

>>> Просмотр (2432x1368, 1233 Kb)

 , ,

ncrmnt ()

KDE4 на MK809III (RK3188)

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

Дефолтный андроед у меня вообще так и не загрузился ни разу на нем, показав только кукишь в HDMI, и был быстро и решительно выпилен в реактор. В сам девайс была воткнута 8гиговая SD карта, на которую был раскатан корень Debian Jessie, готовый к экспериментам. Ну и понеслась.

Первым делом я открыл его, запомнил партнамберы того, что внутри и впаял внутрь HC-05 блютуз модуль, чтобы можно было не возиться лишний раз с проводами, подрубая терминал.

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

Вайфай и блютуз тут AP6210. Это такая сборка из двух чипов от бредкома (broadcom). Если кто не знает, это те самые ребятки которые играют в опенсурс с Raspberry PI а тем временем плодят дичайшие огороженные костыли во всех других разработках. В общем, чтобы заработал вайфай, нам надо прописать нужные нам ножки rfkill, и прочее в arch/arm/mach-rk3188/, после чего воткнуть бинарный огороженный модуль rkwifi.ko. Я очень много времени убил на вайфай, пытаясь понять почему он не работает. Оказалось, что rfkill для вайфая прописывается... В platform_data bluetooth'a. Почему? А в топку логику, Китай же!

Блютуз так и не ожил, несмотря ни на какие манипуляции с brcm_patchram_plus, оставил его на закуску.

В остальном все завелось сравнительно быстро, включая даже мали. С этим мне пришлось изрядно повозиться. Сначала я искал причину того, что шрифты выглядели как лютое УГ, от которого вытекали глаза пару секунд. Когда я почти отчаялся - понял что виной всему оказался встроенный в новенький 55' ящик филипс «улучшайзер» изображения «Digital Crystal Clear». Если оно отключено телевизор сам добавляет артефактов по вкусу. Пока я это искал, заодно поднял и 32х битный цвет, вместо 16ти. Это избавило от неведомых косяков с QT_GRAPHICSSYSTEM=native, из-за которых все артифачило до невозможности.

Теперь самое интересное. mali воткнулся и завелся на ура. Из нестандартного пришлось только сделать один LD_PRELOAD для одного отсутствующего символа. Шестерни (es2gears) так же на ура завращались выдавая 300 fps (не бенчмарк, да). Вот только фон у них при включенным композитинге оказался прозрачным. Как сказал мне rz2k это скорее всего отсутствующий umplock в fbturbo. Еще при этом логотип K рыжий вместо синего (наблюдается только на 32х битах, на 16ти - все ок, но артефакты Qt).

Следующий косяк - это отсутствующий в либах вызов XInitThreads(), который приводит в частности к тому, что запуск es2_info завершается ошибкой. Пропатчить сходу по методу exception13 не вышло, сделал LD_PRELOAD, но он не сработал... В общем тоже просит любви.

В итоге пока остался на kwin_gles + xrender, который оказался на удивление шустрым. C остальным еще предстоит повеселиться. Что-то подсказывает мне, что основные мои проблемы решит патч на XInitThreads() но кто этих китайцев знает...

Теперь самое вкусное. На http://github.com/linux-rockchip/rockchip-3.0 Вы найдете бранч ядра ncrmnt-muldev. Именно там можно откопать мое патченное/напиленное ядро, в котором есть поддержка сабжевого стика, а вскоре добавится и поддержка планшета Pipo M6 Pro 3g.

TODO: Увлекательное путешествие в суть umplock'а и кишки fbturbo, а так же не менее увлекательное приключение с дизассемблингом и патчингом libMali.so по методу exception13. Да и на планшет наработки надо бы перетащить, ибо уже юзабельно.

>>> Просмотр (1920x1080, 404 Kb)

 ,

ncrmnt ()

Дебажим освещение...

На даче проблема - светодиодные лампы на дохнут аки мухи от дихлофоса: в сети ~240 и народ еще постоянно варит, драйвера дохнут быстро и с дымовыми эффектами. Потому решил решить проблему освещения раз и навсегда, заодно добавить колдунство и эльфиек, куда ж без них. Для реализации я вооружился: atmega328p, PT4115 из китаев и nrf24l01. Собственно BOM вышел очень дешев влезает в 5$ не считая самой платы.

Вот теперь и сижу тихо мирно отлаживаю свой адов светодиодный драйвер, получивший кодовое имя «Кровавая Мэри Поппинз» за цвет паяльной маски. Фичи:

  • Есть фича обновления фирмвари по-воздуху
  • До трех программируемых выключаетелей (действия задаются в конфиге).
  • 6 каналов для светодиодов со стабилизацией по току и диммингом. На каждый ток до 1.2А (макс. ток задается смд резистором).
  • 256 уровней яркости на каждый канал. Если нужного номинала токоограничивающего резюка нет, можно дополнительно ограничить яркость в конфиге, пожертвовав некоторым количеством уровней яркости.
  • Есть управление по беспроводному интерфейсу через мою RPC-like приблуду, чтобы потом добавить управление голосом, как дойдут руки.
  • В фоне по нему же сливает периодически данные о напряжениях (цифра / питание диодов / температура (встроенный в atmega328p термодатчик)

Сама железка в окружении bus pirate, uISP + nrf24l01, 6x3W светодиодов (10W больно по глазам бьют. Да и даже от трехватных уже за время отладки плачу, словно эмо).

Видео первого теста с 10W диодом: https://www.youtube.com/watch?v=fnd1b0jGTpM

Собственно, на скриншоте можно увидеть емакс, конфигурационный файл самописного формата (tinyconf), который тупо шьется в eeprom и парсится на железке, кусок ядра самой системы (по привычке все железо-специфичное регистрирую в одном единственном платформо-зависимом файле, так что если припрет эту хрень можно будет без особых проблем перетащить на другую аппаратную платформу). В консоле отладочный выхлоп с платы. Плату для этого прототипа делал сам ЛУТом, в виде маски - тонер цветного принтера. Но так как все тьфу тьфу завелось на следующей неделе буду отправлять заказ на завод, чтобы запилили штучек эдак 30 таких малышек.

Ну и, конечно, proud to be - 146% arduino free!

>>> Просмотр (1920x1080, 273 Kb)

 , , ,

ncrmnt ()

WEB 2.0 USB-Ламинатор

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

Разумеется, нужную температуру оно не докочегаривало, тонер даже не плавился и не переводился, сколько не прокатывай. Разобрал. Выпилил оттуда термореле, на герметик для формирования прокладок двигателя (держит до +375 градусов!) посадил 100к NTC терморезюк в стекле, сделал платку управления на atmega48. Внутрь зашил фирмварю на базе antares и vusb. Далее набыдлокодил апплет для своего lunartool'а (моя convenience обертка над lualibusb).

Дальше решил раскурить lapis. Это такой аппликейшн сервер на moonscript и OpenResty. За один вечерок освоил мунспик^Wмунскрипт, и набыдлокодил расширение для своего lunartool'а которое берет уже написанный апплет, но вместо интерфейса командной строки цепляет его к веб-серверу уже готовым API, которое можно дергать ajax'ом. Для построения графиков я заюзал js библиотеку flot.

Итогом моего сумасшествия стал... WEB 2.0 USB ламинатор с веб интерфейсом. Подобрав температуру, которая очень уж хорошо совпала с теоретическими 176 градусами получил идеальные результаты и практически 100%-ю воспроизводимость.

Вундервафлю в действии можно увидеть тут: http://www.youtube.com/watch?v=IpNvShfgSik&feature=youtu.be

Отдельное спасибо bk_ за музыку, за которую тытруб не блокирует видео и не обмазывает рекламой. Исходники надо?

>>> Просмотр (1920x1080, 124 Kb)

 , ,

ncrmnt ()

KDE4 на Pipo Max M6 Pro 3g

Итак, пожалуй уже есть чем похвастаться. Самый, так сказать первый вариант, преальфа. Надоело мне ждать пока KDEшники запилят свой планшет, потому решил сделать это сам.

Да, девочки, Debian Wheezy на armhf это вам не розовая Gentoo на x86. Это свое, особое красноглазие не для слабонервных ;) После чудных приключений в 4х сериях я таки запустил (пока поверх fb и с sd карты (ядро в нанде)) KDE4 на RK3188. Как это не странно, но гуй не особенно тормозит даже на позорном тормозном софтовом рендере, включая перетаскивание и ресайз (хотя матрица-то 2048х1536). Артефакты имеются на сложных лейаутах но отчего и почему только предстоит выяснять.

Прошлые серии детектива: [ один | два | три | четыре ]

Собственно, с 4й серии изменилось немного. Я немного докрутил драйвер lcdc0, чтобы завелся без проблем fbcon по дефолту. Заодно теперь оно не паникует при попытке прочитать disp_info в /sys/class/graphics/fb0/. Более того, оно и лог загрузки теперь стало без проблем выводить и даже с цветом. Жаль только лого при включенном fbcon оно не рисует.

Выпилил к чертям свинячьим RK_EARLYPRINTK и эпичный костыль с консолью поверх FIQ дебаггера (sic!). Там где-то был рейс намертво вешавший иногда систему, потому как только я избавился от этой содомии все стало намного стабильнее и отзывчивее.

Немного разгреб костыли в board файле и добавил поддержку звука, хотя пока еще не проверял еще.

Прошелся по сырцам dwc_otg драчовым напильником повырубав к чертям свинячьим лишний и весьма раздражающий дебаг.

Немного докрутил степпинг частоты DDR, на 600 Mhz работает стабильнее и сильно быстрее.

Немного докрутил степпинг проца по частоте, выставив заявленные 1.8Ghz вместо 1.6Ghz в пределе. Пока полет нормальный.

Ну и, наконец, самое главное - я запустил KDE4. Пока поверх /dev/fb0, без мали, в моем ядре нет даже упоминания о том, что оно существует. Есть в соседнем бранче ядра откуда надо это дело перетаскивать и раскуривать если что будет не так.

Тачскрин не подхватился evdev'ом, подозреваю что неправильно прописаны капсы и надо его будет немного того, докрутить немного. Так что пока залогинился при помощи усб клавиатуры и мыши.

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

Следите за новостями и подписывайтесь на тег rk3188. Образы и сырцы будут выложены на шитхаб сразу, как только будет рабочая (более или менее) система с работающим более или менее мали. А еще там on2 нетыканный...

Сам скриншот

>>> Просмотр (2048x1536, 1018 Kb)

 , ,

ncrmnt ()

RSS подписка на новые темы