суботу, 17 грудня 2016 р.

Проект роверового лічильника на базі смартфону Sony Experia X8. Частина 4.

Частина 1
Частина 2
Частина 3
Хоч сенсор ударів серця ще не прийшов, однак вже можна все хазяйство замонтувати на ровер. Нижче галерія фотографій з поясненнями.

Проект роверового лічильника на базі смартфону Sony Experia X8. Частина 3.

Частина 1
Частина 2
Сьогодні прийшов перший з замовлених гаджетів, а саме сенсор каденсу і швидкості. Почав підключати до смартфону, виявилося, що не все так просто. По перше, треба ще встановити дві програмки, а саме Ant+ Plugins Service, друга то Ant Radio Service, які містять необхідні бібліотеки і сервіси для Андроїда. Можна apk потягнути з інтернету. По встановленню обох відкриваємо OruxMaps і в загальних налаштуваннях сенсорів шукаємо наш сенсор, махаючи магнітом біля сенсора. Теоретично після цього все має працювати автоматично. Тикаємо на кнопку "змійку", включаємо Ant+ і вибираємо наш сенсор. Бажано ще налаштувати OruxMaps, щоб він виводив потрібні покази сенсорів на екран.
ПС Цікаво, що на мому робочому смартфоні Asus Zenfone Max після встановлення цих двох згаданих вище програм сенсор без проблем викрився і запрацював в Strava! Це я до того, що в жодній специфікації по смартфону я не знайшов найменшої згадки, що в ньому є сенсор Ant+. Добре знати.

Частина 4

пʼятницю, 25 листопада 2016 р.

Проект роверового лічильника на базі смартфону Sony Experia X8. Частина 2.

Перша частина міститься тут.
Поки замовлені деталі добираються до мене з "центральної країни", я не знати для чого зайнявся у вільний час зміною софту телефону Sony Xperia X8, який збираюся використати в якості роверового лічильника. В принципі, можна було б і залишити оригінальний софт. Додаткова міні SD-карта служить сховищем карт для Orux Maps. Все працювало добре на оригінальному софті, однак потяг до вдосконалення потягнув мене вперед. Пишу це все здебільшого для себе, можливо комусь теж знадобиться.

вівторок, 15 листопада 2016 р.

Проект роверового лічильника на базі смартфону Sony Experia X8. Частина 1.

Чесно, ціна Garmin'ів зашкалює, навіть тих нижчих версій. Дивився я теж в сторону Mio Cyclo 505 HC, але це теж недешевий варіант, а до того є ще обмеження по картах. Mio випускається з комплектацією двох регіонів - Сходу і Заходу. Маючи карти Східної Європи не поставиш додатково карти Західної, і навпаки. Ну і ще до того не вдасться додаткові карти додати, бо малий об'єм пам'яті, а слота на SD-карту немає.

четвер, 6 жовтня 2016 р.

Чиї скарби в землі?

Цікава історія недавно сталася в Польщі в містечку Любомєж. Коротко виглядало все так. Містечко Любомєж належить до Шльонська, де колись компактно проживали німці. Після сування границь десь після або й під час Другої Світової якийсь фермер закопав свої сімейні цінності в землю, зверху посадив дерево і виїхав до Німеччини.

середу, 31 серпня 2016 р.

Пікуй 1408 м на День Незалежності 24.08.2016

- Ми завтра йдемо на Пікуй, - голос одногрупника Олекси в телефоні пізнім вечором 23 серпня був безапеляційний.
- "Ми" то хто?
- Ти, я і мій Юрко.
- Ага, ну нічо собі. Зараз тільки узгоджу то з дружиною.

вівторок, 5 липня 2016 р.

Тест керівниці Hylix MTB

Десь так років 5 тому на ринку появилися різні запчастини для ровера з карбону під маркою Hylix. Саме в цей час почали появлятися різні запити на форумах щодо якості компонент цієї фірми. Хоч офіційної сторінки Hylix на даний момент так і не існує, однак товару від них повно.

вівторок, 1 березня 2016 р.

Ще дещо про сімейне дерево і державні архіви Польщі.

Я колись писав про державні архіви в Польщі. Це маленьке повідомлення стало початком серйозного дослідження своїх коренів. Вдалося накопати багато цікавих фактів, написана сторінка на Вікіпідії  про сільце Гадлі Шклярські, з якого походить моя родина по маминій лінії, і про пароха села Тарнавки отця Теофіля Калинича.

четвер, 25 лютого 2016 р.

Деякі примітки до рутера на базі OpenWRT і 3G/4G модему

1. Отримуючи інтернет-зв'язок із світом через зв'язку рутера і 3G/4G модему, позбавляємося доступу ззовні до ресурсів у локальній мережі і рутера. Причина банальна - модем нібито отримує зовнішню адресу, але це нічого не означає, всі порти ззовні закриті. Так насправді, модем-інтерфейс, чи то wwan0, чи ppp0 отримують дві адреси - внутрішню в мережі провайдера і зовнішню на світ. Наприклад, мій модем зараз має адресу 10.181.18.180 в мережі провайдера:

wwan0     Link encap:Ethernet  HWaddr FA:63:B9:81:12:7C 
          inet addr:10.181.18.180  Bcast:10.181.18.183  Mask:255.255.255.252
          inet6 addr: fe80::f860:b9ff:fe81:127c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:281553 errors:239 dropped:0 overruns:0 frame:0
          TX packets:230960 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:282998444 (269.8 MiB)  TX bytes:49976507 (47.6 MiB)


а зовнішню адресу можна перевірити по checkip.dyndns.org, і вона зараз є 94.254.145.5. Ну але хоч би як ви не відкривали порти в рутері, до рутера ззовні вам зась. Можливо, якийсь провайдер і не блокує зовнішніх портів, але, судячи по форумах, це величезна рідкість.
Вихід є, можна докупити статичну ip-адресу, але це мене найменше цікавить. Інший логічний вихід - організувати vpn-мережу. Ну і виявилося, що, в принципі, робиться все досить просто на базі n2n. Причому для OpenWRT все робиться досить елементарно. Перш за все треба додати додаткові сховища пакунків від eko:

    # cd /tmp
    # wget http://dl.eko.one.pl/chaos_calmer/eko1.pub
    # opkg-key add eko1.pub
    # echo 'src/gz eko1 http://dl.eko.one.pl/chaos_calmer/ARCH/packages/' >> /etc/opkg/customfeeds.conf"
    # opkg update
 
Далі встановити пакунок n2n-v2,
# opkg install n2n-v2
і відповідно його сконфігурувати:

# vi /etc/config/n2n 

 config edge
    option ipaddr        '10.90.70.1(ip адреса вашої ноди)'
    option netmask        '255.255.255.0'
    option supernode    'ip-адреса сервера супермоди'
    option port        'порт сервера супермоди'
    option community    'назва спільноти'
    option key        'пароль доступу до спільноти'
    option route        '0'
 

#config supernode
#    option port        '86'


і запустити


# uci commit n2n
# /etc/init.d/n2n enable
#/etc/init.d/n2n start


Опції для створення суперноди закоментовані, вона нам на рутері і так ні до чого, бо доступу до неї немає. А в конфігурації моєї ноди, яка працює на рутері з модемом, ноді надано адресу 10.90.70.1 з маскою 255.255.255.0. Ця нода буде з'єднуватися з портом зовнішньої суперноди, яка запущена десь на сервері, який має відкритий якийсь порт (порт сервера суперноди). Можна знайти такі відкриті сервера, але вони довго не живуть. Простіше самому на якомусь сервері, до якого маємо доступ, скомпілювати або встановити пакунок n2n з супернодою і запустити її, прав суперкористувача для цього не потрібно.
Отже, скажімо, що маємо доступ до якоїсь суперноди, і у нас на рутері запущена нода. Треба тепер з'єднатися ззовні до неї. Це досить просто: на будь-якому компі встановлюємо пакунок n2n, і запускаємо ноду

# edge -a 10.90.70.2 -c назва_спільноти -k пароль_доступу_до_спільноти -l ip_адреса_сервера_суперноди:порт_сервера_суперноди -f

Тобто запускаємо ноду з тими ж параметрами, що й на рутері, тільки міняємо адрес ip в спільній мережі, на рутері 10.90.70.1, а на зовнішньому компі 10.90.70.2, наприклад. Ну все тепер, спільна vpn мережа створена, є супернода, є дві ноди, які комунікуються за допомогою суперноди. Щоб, наприклад, з'єднатися з рутером, достатньо на тому зовнішньому компі запустити переглядач інтернету і перейти на адресу http://10.90.70.1, має відкритися веб-інтерфейс рутера OpenWRT. На будь-якому компі в локальній мережі рутера можна запустити ноди з тими параметрами (міняючи тільки ip) і мати таким чином доступ до них.

2. На даний момент в чистому інтерфейсі luci для OpenWRT не реалізована підтримка висвітлення сили сигналу в модемі. В принципі, це можна побачити з рівня командного рядка, але постійно лазити на рутер, щоб тільки запустити команду типу

# uqmi -d /dev/cdc-wdm0 --get-signal-info

не зовсім зручно, бажано мати якусь звичну візуальну інфу. В сховищах eko я знайшов пакунок, який сяк-так це реалізує. Отже, встановлюємо пакунок 3ginfo:

# opkg update
# opkg install 3ginfo

Налаштовуємо:

# vi  /etc/config/3ginfo

config 3ginfo
    option http_port '81'
    option language 'en'
    option device '/dev/ttyUSB2'


# uci commit 3ginfo
# /etc/init.d/3ginfo enable
#/etc/init.d/3ginfo start

В мене ядро створює 4 пристрої для модему, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3 і модуль qmi_wwan створює свій /dev/cdc_wdm0. Останній зайнятий під зв'язок, тому 3ginfo мусить використовувати інший пристрій, в даному випадку це /dev/ttyUSB2 для отримання інфо про сигнал. Далі відкриваємо сторіночку http://адреса_рутера:81 і бачимо картинку.

3. Часом, якщо ніхто не користується зв'язком, модем "засинає". Ніби зв'язок є, адреса ip є, але модем мовчить, жодна адреса не відкривається. Думаю, це дійсно модем засинає. Я додав до крона рядок, щоб через кожну хвилину пінгувався сервер гугла, це мало б підтримувати модем у збудженому стані:

*/1 * * * * ping -c 1 8.8.8.8

Ось уже два дні на модемі ще ні разу не пропав зв'язок. Ніби працює.


середу, 17 лютого 2016 р.

OpenWRT і модем ZTE MF880 (продовження)

Цей допис є продовженням історії "сексу" з вищеназваним модемом. Не знаю, як цей модем потрапив в список підтримуваних, якщо стільки з ним гемору. Я писав про новий скрипт /lib/netifd/proto/wwan.sh з пакунку wwan, який має займатися розпізнаванням модему і передачею конфігурації на інші скрипти з'єднання. У випадку мого модему це мав бути /lib/netifd/proto/qmi.sh. Сьогодні ще раз переглянув той скрипт, і вгорі скрипта зацікавився параметрами, з якими він працює. А саме параметром "delay" i "modes". "Modes" то зрозуміло, це з якою мережею має з'єднуватися, типу "all,lte,3g,..", можна подивитися допомогу по uqmi. А от "delay" мене навів на підозру, що це напевно затримка для повної ініціалізації модема. І дійсно, опускаюся нижче по скрипту і бачу стрічку
[ -n "$delay" ] && sleep "$delay"
якраз перед тими, які я коментував перед тим. Аааах, он в чому справа! Ну все, міняю wan інтерфейс до первісного стану, коментую стрічку для cron, створюю новий wwan із затримкою 20 секунд для проби:
config interface 'wwan'
        option 'proto' 'wwan'
        option 'apn' 'internet'
        option 'delay'    '20'

витягую модем, запихаю назад - мережа появляється! Виключає, включаю рутер - модем без проблем спокійно з'єднується! Як все просто... Проблема в тому, що ці скрипти добре не документовані, і всюди доводиться проламуватися крізь хащі.  

понеділок, 15 лютого 2016 р.

Женячка рутера TP-LINK TL-WR1043ND з LTE модемом ZTE MF880

Початок. Продовження історії тут.

Є інтернет LTE на 60 мегабіт, є рутер TP-LINK L-WR1043ND з USB-портом, куплено за недорогу копійку модем ZTE MF880. Задача була проста - подружити цей весь колгосп для роздачі інтернету по квартирі. Вирішення не передбачало ніяких несподіванок: викинути оригінальну прошивку, закинути туди нову на базі DD-WRT або OpenWRT, модем мав служити WAN-інтерфейсом. DD-WRT мені вже трохи приїлося, захотілося знову побавитися з OpenWRT, тож завантажив в рутер останню версію на даний час Chaos Calmer 15.05. На диво все пройшло гладко. Підключив рутер до існуючої мережі, встановив необхідні пакунки

#opkg update
#opkg install wwan comgt chat comgt-ncm comgt-directip uqmi umbim usb-modeswitch 

і пакунки для зв'язку через QMI модуль

#opkg install uqmi kmod-usb-net-qmi-wwan

В цій новій Chaos Calmer 15.05 появився новий пакунок wwan, який служить для автоматичного викривання драйвера модему. Це ніби добре, модем має автоматично викритися і зв'язатися з мережею. Треба лиш відкоригувати wan інтерфейс в /etc/config/network:

config 'interface' 'wan'
         option proto wwan
         option apn internet

Можна ще додати option pincode 1234, якщо sim-карта з пін-кодом. Тобто рутер за допомогою скриптів пакунку wwan мав би розпізнати модем, впровадити пін-код 1234 і заставити його з'єднатися з мережею провайдера з APN "internet".  Нового інтерфейсу я не створював, щоб потім не гратися з фаєрволом, використав стандартний wan, так як вище. Все би мало грати як гітара. Втикаю модем, і ... тиша. ?*№&!!!! Явне вказування протоколу теж нічого не дало:

config 'interface' 'wan'
         option 'proto' 'qmi'
         option 'device' '/dev/cdc-wdm0'
         option 'apn' 'internet'

Настроїв WiFi, лізу по ssh до нього. dmesg показуює, що появився пристрій /dev/cdc-wdm0:

[  111.170000] usb 1-1: new high-speed USB device number 6 using ehci-platform
[  111.320000] option 1-1:1.0: GSM modem (1-port) converter detected
[  111.330000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[  111.340000] option 1-1:1.1: GSM modem (1-port) converter detected
[  111.340000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[  111.350000] option 1-1:1.2: GSM modem (1-port) converter detected
[  111.360000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[  111.370000] option 1-1:1.3: GSM modem (1-port) converter detected
[  111.370000] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[  111.400000] qmi_wwan 1-1:1.4: cdc-wdm0: USB WDM device
[  111.400000] qmi_wwan 1-1:1.4 wwan0: register 'qmi_wwan' at usb-ehci-platform-1, WWAN/QMI device, 5d:a2:44:f8:89:56


Нарешті ps показує, що модем застряг на команді

uqmi -s -d /dev/cdc-wdm0 --get-pin-status 

і

grep "UIM uninitialized" 

Що за чорт, я ж піна ніякого не маю на sim-картці. А навіть якщо б мав, то все одно так не має бути. Вбиваю всі процеси uqmi:

killall -9 uqmi

і пробую uqmi -s -d /dev/cdc-wdm0 --get-pin-status - дійсно висить, не рухається. Знайшов ті стрічки у файлі /lib/netifd/proto/qmi.sh :

while uqmi -s -d "$device" --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do
        sleep 1;
    done

    [ -n "$pincode" ] && {
        uqmi -s -d "$device" --verify-pin1 "$pincode" || {
            echo "Unable to verify PIN"
            proto_notify_error "$interface" PIN_FAILED
                 proto_block_restart "$interface"
            return 1
        }
    }


закоментував. Витягую модем, вставляю - ха! Працює! Але все це мені це не подобається, зміна системних файлів не входить в плани. Після проб зробив все інакше.
Поміняв інтерфейс wan у /etc/config/network:

config interface 'wan'
    option ifname 'wwan0'
    option proto 'dhcp'


Переписав скрипт для автоматичного з'єднання модему при розриві зв'язку з блогу UAVmatrix, назвав /usr/bin/checklte.sh:

#!/bin/sh

YOUR_APN=internet

#Create lock file
LOCKFILE=/tmp/lock.txt
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
    echo "This script is already running"
    exit
fi

# make sure the lockfile is removed when we exit and then claim it
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
echo $$ > ${LOCKFILE}
#let`s ping google.
#if ! wget -q -s http://google.com
if ! wget -q --tries=10 --timeout=20 --spider http://google.com
    then
            sleep 1
            #let`s ping google again to doublecheck that RPI is offline.
            #if ! wget -q -s http://google.com
            if ! wget -q --tries=10 --timeout=20 --spider http://google.com
             then
                    killall -9 uqmi
                    # killall -9 dhclient
                    uqmi -d /dev/cdc-wdm0 --set-device-operating-mode shutting_down
                    sleep 30
                    uqmi -d /dev/cdc-wdm0 --stop-network 4294967295 --autoconnect
                    sleep 2
                    uqmi -d /dev/cdc-wdm0 --network-register
                    sleep 2
                    uqmi -s -d /dev/cdc-wdm0 --start-network ${YOUR_APN} --keep-client-id wds --autoconnect &
                    echo "Modem
Restarted"                          
                    sleep 8
                else
                        echo "Modem Online"
                fi
    else
        echo "Modem Online"
    fi

#remove LockFile
rm -f ${LOCKFILE}


Скрипт містить закоментовані рядки для обрубаного wget зі стокового OpenWRT. Ці що є, то для встановленого wget з сховищ.
І, відповідно, команда для cron запускає скрипт кожну хвилину:

*/1 * * * * /usr/bin/checklte.sh &

Втикнутий модем розпізнається, далі ним займається скрипт з cron, який перевіряє з'єднання, якщо воно є, то нічого не робить, а якщо немає, то вимикає модем, виключає глобальну опцію автоз'єднання в ньому, реєструє в мережі без з'єднання і запускає само з'єднання з відповідним APN провайдера.

суботу, 6 лютого 2016 р.

Xanten (Ксантен), Німеччина 2015

Минув рік від цієї поїздки в лютому 2015 року. Про Ксантен дізналися випадково від мого брата, який наполягав на відвіданні цієї місцини. І недарма. Провели ми там цілий день, находилися так, що ноги відпадали, але вражень було багато і це вартувало цього.

вівторок, 26 січня 2016 р.

Вирішення проблеми скачків пульсу в пульсометрі

Після купівлі пульсометра-трекера Nav Master II пройшло вже майже 3 роки, і от недавно появилися глюки, а саме часом ні з того ні з сього пульс почав скакати до 230-250, це могло статися на початку запису треку, могло десь всередині, а часом просто стабільно 230 ударів на хвилину були протягом всієї траси.

суботу, 16 січня 2016 р.

LIRC на супутниковій карті Prof Revolution 7500 DVB-S2

Собі на пам'ять, і може комусь стане в нагоді. Посилене риття інтернету не дало ніякого готового рецепту, довелося самому придумувати. Карта Prof Revolution 7500 купляється в комплекті з пультом. Для налаштування LIRC для карти Prof Revolution 7500 потрібно мати  конфігураційний файл і знати, який пристрій потрібно вказувати для демона lircd.

Тест термобідону Elite Deboyo 500 ml 12H

Хочу написати короткий відгук про термофлягу Elite Deboyo.
Відразу хочу сказати, якщо комусь вдасться десь трафити на неї на розпродажі - беріть! Вона вартує того. Ціна її коливається біля 25-35$, але
на розпродажі можна купити і за половину ціни, що мені якось вдалося.

вівторок, 12 січня 2016 р.

понеділок, 4 січня 2016 р.

Шосейний ровер Koga Miyata Gran Racer 1994 року

Цей шикарний шосейник потрапив мені в руки випадково. Як тільки я побачив його кольори, то зрозумів, що він мусить бути мій. І це синьо-жовте чудо дійсно є суперове. А взагалі я спочатку думав, що Koga Miyata це японська фірма. Насправді не все так просто.

Google Analytics