
Как лучше всего провести воскресное утро? Для меня вопрос давно решен, ведь в этот день работает моя любимая барахолка, где всегда можно найти что-то интересное. Здесь сочетается азарт и любопытство, когда, купив очередного «кота в мешке», пытаешься понять, стоил ли он потраченных денег.
Сегодня расскажу, как случайно стал обладателем устройства Bobcat Miner 300, разобрался в особенностях работы сетей LoRaWAN и выяснил подводные камни, на которые можно нарваться, если купить такой девайс, например, на eBay. Нарезайте себе рулетик, заваривайте пуэр — и приятного чтения!
О чем вообще речь?
Покупки на барахолке давно превратились для меня в охоту за редкими девайсами. Часто продавцы сами не знают, что они продают, и уж тем более не в курсе особенностей тех или иных устройств. Когда я ковырялся в ящике с грудой старых роутеров, мое внимание привлекла коробка с единственным светодиодом и надписью BOBCAT:

Содержимое наклейки:
-
Bobcat IoT hotspot;
-
Model: Bobcat Miner 300 (G285);
-
FREQ: EU868 MHz;
-
INPUT: DC 12V — 1A.
Там же была пара MAC-адресов и серийный номер устройства. Быстро выяснил, что подобный девайс на eBay продается от 100 $ до 500 $, и спросил у продавца стоимость. Тот назвал цену, соответствующую паре чашек кофе в хорошем заведении, обозвав Bobcat роутером. На этом и сошлись.
В комплекте с ним не было блока питания. Но это дело поправимое, дома лежало несколько БП с нужными характеристиками. А вот антенну LongFi я решил заказать в Поднебесной, однако не успел. Коллега-радиолюбитель выделил мне одну из своих, лежавших в закромах. Вот теперь пришла пора познакомиться с устройством поближе.
Внешний вид
Спереди нет никаких элементов, кроме светодиодного индикатора, демонстрирующего текущее состояние или готовность к беспроводному соединению.

На задней части расположены:
-
разъем RP-SMA M;
-
скрытая кнопка сопряжения по Bluetooth;
-
слот для MicroSD-карты;
-
сетевой порт Ethernet;
-
вход питания.
Больше ничего примечательного снаружи я не нашел.
Назначение
Прежде чем лезть внутрь, я решил узнать поподробнее, что это за устройство и как сочетается IoT hotspot и Miner. Для меня это было два несочетаемых понятия. Оказалось, что существует сеть Helium IoT, созданная для сбора данных с датчиков LoRaWAN.
Пользователи приобретают устройства с поддержкой этого протокола и оставляют работать круглосуточно. Множество таких независимых хотспотов образует сеть, которая пригодна для передачи данных, текстовых сообщений, раздачи интернета и тому подобных задач.
Чтобы мотивировать держателей хотспотов поддерживать круглосуточную работоспособность точек, создатели решили использовать криптовалюту. Каждый принятый и переданный пакет данных вознаграждался какой-то долей токена HNT. Helium Network продает свои услуги различным компаниям, использующим в работе беспроводные датчики. Сбор данных с них предполагает развертывание дорогостоящей инфраструктуры, что фактически и делает эта сеть.
В ней IoT hotspot выполняет роль майнера, который можно приобрести, установить и поддерживать в рабочем состоянии 24/7, получая соответствующее вознаграждение. Казалось бы, ситуация Win-win, но дьявол, как всегда, кроется в деталях — об этом я узнал уже по факту.
На грабли
Первое, что я стал искать, это как восстановить настройки до дефолтных. Спустя пару часов пришел к выводу — такого способа нет. Это показалось максимально странным, но в процессе мне удалось попасть в веб-морду и сбросить настройки. После этого я скачал приложение Helium Hotspot, зарегистрировался в нем и попытался выполнить привязку устройства к своему аккаунту.
В итоге получил сообщение об ошибке, поскольку оно уже привязано к учетке другого участника сети. И просто так отвязать его нельзя. Чтобы продать такой майнер, требуется выполнить виртуальную передачу прав на устройство от продавца к покупателю. Без этого оно бесполезно. А если подключить его к сети, то Bobcat радостно и весело продолжит «майнить» на своего предыдущего владельца.
После вдумчивого гугления открылась еще более интересная информация. Официального сайта bobcatminer.com больше нет, хотя домен существует. Его регистрировала британская компания Com Laude в интересах гонконгской CATBOB HK LIMITED. Та формально «жива», но, вероятно, ведет уже другую деятельность. Домен истечет 2026-01-24, но сайт вряд ли заработает.
Проблема в том, что с пропаданием вендора перестала обновляться и OTA-прошивка устройства. А после того как Helium перешел на блокчейн Solana, девайс вовсе потерял актуальность. Зато появились всякие разные сторонние проекты, которые решили воспользоваться ситуацией. Ими можно назвать https://bobber.com/ и https://bobcatminer.shop/. Интереса ради я написал запрос в саппорт contact@bobcatminer.shop и получил любопытный ответ:

Заманчивое предложение, но слишком сильно похоже на скам. Да и майнить HNT уже не выйдет, сейчас сеть расплачивается токеном IOT, который почти ничего не стоит, так что смысла держать девайс фактически нет. Поэтому я решил исследовать аппаратную часть устройства и найти ему альтернативное применение.
Потроха

Как только я полез внутрь, стало ясно, что это достаточно мощный одноплатный компьютер с такими характеристиками:
-
CPU — Rockchip RK3566;
-
RAM — 2GB;
-
Onboard eMMC Flash — 64GB;
-
Wi-Fi — Azurewave AW-NM372SM (IEEE 802.11 b/g/n + BT + FM);
-
Ethernet — MotorComm YT8512C (10/100 Mbps);
-
LoRa Module — SX1302.
Особое внимание стоит уделить модулю концентратора LoRa. Он выполнен в форм-факторе Mini PCI-e, а значит, при необходимости его легко можно интегрировать в любой ПК или ноутбук для исследовательских целей:

Еще стало ясно, что этот одноплатник можно запустить с MicroSD-карты памяти, но это потребует определенных танцев с бубном. На этом этапе я наткнулся на проект crankk.io, ставший альтернативой сети Helium. Его авторы смекнули, что на руках у пользователей осталось множество бесполезных устройств, и решили вдохнуть в них новую жизнь в виде собственного образа операционной системы Crankk OS.
Смена ОС
Перепрошивка состоит из двух этапов. Первым нужно скачать образ патча (эта ссылка только для модели G285) на SD-карту, загрузить устройство и несколько минут подождать. После этого bootloader будет заменен, и теперь можно стартовать кастомную ОС.
Стоит понимать, что после того как вы запустите процесс замены загрузчика, простого пути назад уже не будет. Дважды подумайте, а надо ли оно вам. Но если все же решитесь, то помните: процедура может окирпичить устройство. Изредка возможна ситуация, когда гаджет залипает в Maskrom-режиме (aka DFU), и поэтому авторы выложили еще один специальный образ M-VERSION, призванный помочь загрузиться. Плюс на самой плате есть кнопка Recovery, которая принудительно этот режим включает:

Авторы позиционируют Crankk OS как бесплатную систему с открытым исходным кодом. Подразумевается, что она поможет использовать устройство в их собственной сети, но при этом обеспечит полноценный root-доступ. Захотели в сеть Crankk — есть простая процедура онбординга, после которой девайс начинает майнить токен CRKK в сети Kadena. Не хотите этим заниматься, удаляете контейнеры с ПО, отключаете механизм автоматического восстановления и ставите нужный вам софт.
Я не буду рассказывать про то, что это за сеть и как с ней работать. Мне было интересно ответить на вопрос, смогу ли я использовать «железку» для запуска собственных приложений.
После перепрошивки
По умолчанию при загрузке нужно подключить Bobcat Miner к сети Ethernet-кабелем для получения настроек DHCP. Теперь можно постучаться по SSH. Дефолтные реквизиты:
-
логин — crankk;
-
пароль — B@tch0n3.
Я поменял пароль на собственный и стал смотреть, что же внутри этой замечательной системы. Для начала то, как она себя определяет:
# uname -a
Linux crankk-6fb3ed72 4.19.232 #2 SMP Thu Oct 3 18:28:41 UTC 2024 aarch64 GNU/Linux
Дальше информация о процессоре (серийник затер):
# cat /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdh p cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x2
CPU part : 0xd05
CPU revision : 0
processor : 1
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdh p cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x2
CPU part : 0xd05
CPU revision : 0
processor : 2
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdh p cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x2
CPU part : 0xd05
CPU revision : 0
processor : 3
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdh p cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x2
CPU part : 0xd05
CPU revision : 0
Hardware : Rockchip RK3566 Tiansizhihui Board
Serial : XXXXXXXXXXXXXXXX
Одним глазком взглянул на загружаемые модули:
# lsmod
Module Size Used by Not tainted
cywdhd 901120 0
cywdhd — это драйвер Azurewave Wi-Fi. Затем посмотрел на точки монтирования:
Filesystem Size Used Available Use% Mounted on
/dev/root 468.0M 285.5M 147.5M 66% /
devtmpfs 977.0M 0 977.0M 0% /dev
tmpfs 985.8M 0 985.8M 0% /dev/shm
tmpfs 985.8M 496.0K 985.3M 0% /tmp
/dev/mmcblk1p1 29.9M 27.3M 2.7M 91% /boot
/dev/mmcblk1p3 57.5G 3.1G 51.4G 6% /data
overlay 57.5G 3.1G 51.4G 6% /usr
overlay 57.5G 3.1G 51.4G 6% /var/log
overlay 57.5G 3.1G 51.4G 6% /var/lib
cgroup 985.8M 0 985.8M 0% /sys/fs/cgroup
overlay 57.5G 3.1G 51.4G 6% /data/docker/overlay2/76aeccaae63474f69eb9d1e44b86600bcbeba3d6889d79d1b43f1a3c9f99e553/merged
overlay 57.5G 3.1G 51.4G 6% /data/docker/overlay2/8f8ab01d393f5e2cd42eb0b3df04ee7c4f2869d11ba81705fd58b91499bddf2e/merged
overlay 57.5G 3.1G 51.4G 6% /data/docker/overlay2/e6e74ba662e835c7c1da7fcc04468ee2f63d42bd3eb25bb7f3e1746f2f4cc198/merged
overlay 57.5G 3.1G 51.4G 6% /data/docker/overlay2/0dd8b2c3e3565ee0f38e1e1dea9ed7f7956c3ba882e7a7003a3430f280c1e242/merged
overlay 57.5G 3.1G 51.4G 6% /data/docker/overlay2/a7f7c721fd83a40eb1c4aa740dcfa847c955c0b088dc383308c1b37601ea7284/merged
Хорошо видно, что тут весь софт работает в контейнерах. Для удобства накатил Portainer Community Edition. Вначале создал том, где хранить данные:
# docker volume create portainer_data
Скачал и запустил нужный мне образ:
# docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts

Когда девайс настроен, внутри крутятся четыре контейнера, сохраняющие информацию в директорию /data/docker/volumes/crankk_data/_data. При необходимости все эти контейнеры и образы легко убираются, а следы вычищаются.
Вместо заключения
Получается, что итогом такой операции стал полный контроль над устройством, где я могу использовать предварительно настроенный Docker или вообще удалить все с этим связанное и ставить что-то свое с нуля. Вместо нерабочего майнера я получил вполне приятный, хоть и специфический одноплатный компьютер с поддержкой LoRa, который можно использовать в своих целях. Например, настроить на нем Meshtastic или вообще превратить в небольшой VPN-сервер.
Я также хочу проверить LoRa-модуль вне этого устройства, подключив его с антенной к ноутбуку. Возможно, тоже хорошее начало для различных экспериментов. Если я бы покупал такой девайс отдельно, то это бы вышло в 10 раз дороже, чем внутри майнера.
Мне нравится давать новую жизнь неактуальным и устаревшим устройствам. Так что моему Bobcat Miner 300 повезло: он точно не закончит свой путь в коробке со старыми китайскими роутерами, а продолжит трудиться, но уже в других проектах с LoRaWAN.
Как вам девайс и что думаете по поводу Crankk OS? Жду вас в комментариях.
Автор: k0mar0v