И снова Oregon Scientiic

А настройки битовой скорости не пробовали менять еще?

Да пробовал (±200б/с с небольшим шагом), пробывать AFC отключать, пробовал длину преамбулы менять, размер и состав синх битов, толерантность к ошибкам в них. Даже документацию на Hope RF69 пробовал читать, больших откровений это не принесло, на первый взгляд в коде все правильно. Надо попробовать поставить рядом RPi с платкой приемника (они у меня есть), и посмотреть что будет.

Глобально тут можно попробовать работать с RFM69 в режиме приёма сырых данных, в обход его пакетного процессора. Под это сейчас много что готово, биты принимаются, но из-за нехватки времени так и не доделали код в rfm69.py. Если кто-нибудь готов взяться тестировать и допиливать - расскажу подробности.

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

Аппаратную как раз можно оставить через пакетный процесор, как есть

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

Я готов взяться допиливать.

Отлично! То что есть по юзерспейсу тут: https://github.com/contactless/rfm69-linux/blob/feature/rfm69_raw/test_raw.py

Ещё в ядре нужно включить на GPIO DIO2 rfm69 драйвер lirc_gpio. Я постараюсь в ближайшие пару дней собрать соответстующее ядро.

А драйвер lirc можно без пересбора ядра загрузить и подключить? Как я полнимаю надо дополнительно поставить lirc (apt-get install lirc)? Или большую магию надо применить?

Вообщем собрал я стенд с RPi и простым ресивером, поставил собрал декодер на базе RCSwitch - и вообщем мои oregonы нормально декодятся. Под шумок нашел еще декодер для моих старых Vitek датчиков (сечас разбор пакета допишу, и все, прием пакета и проверка уже работает). Собственно вопрос - а не было наработок чтобы применить RCSwitch на WBSH? Там вроде тоже просто считывается GPIO на RPi, т.е. по идее нужно только переписать часть инициализации RFM и собственно часть работы с GPIO.

Вот собранное теущее ядро с модулем lirc_pwm (он универсальный, поддерживает и gpio тоже): http://lexs.blasux.ru/dump/linux-image-3.19.0-imxv5-x0.1_3.19-imxv5-x0.1%2Bwb20151117203913_armel.deb

Добавлены новые DTB с lirc-входом с пина DIO2 радиомодуля:

  • для WB3: imx23-wirenboard32-rfm69-raw.dtb
  • для WB4: imx23-wirenboard41-rfm69-raw.dtb
    Девайс будет называться /dev/lirc0, к нему обращается скрипт на который Евгений дал ссылку выше.

Сразу глупый вопрос - а ядро у нас универсальное, только device-tree отличается? Т.е. у меня WBSH 3.5 (самый первый Smart Home) это на него встанет? А то удаленно поставить я поставлю, а вот если он не загрузится, ехать придется, карту менять.

Должно быть универсальное, но никто не тестировал на 3.5. Лучше конечно удалённо не накатывать.

Вообщем после перезагрузки контроллер потерялся, поеду завтра лечить его. Кстати вопрос, чтобы работало RFM68 RAW его нужно отдельно такой dtb прописать в uEnv.txt или сам подхватится?

У меня с этим ядром сеть не поднимается - нет wifi интерфейса. Пока времени не было разбираться. @LexsZero - возможно такое, что забыли что-то скомпилить?

А покажите lsusb и ifconfig -a пожалуйста.

А я доехал до контроллера, и завел его. Я зачем-то в uEnv.txt поменял dtb на rfm-raw, а при таком dtb вообще ничего не поднимается, ядро грузится, линукс грузится, но половина устройств отсутствует.
Вообщем вернул обратно на imx23-wirenboard32.dtb и все стано нормально, устройство загрузилось.

Извиняюсь, по ошибке в device tree для WB3 оказался WB4. Исправил: http://lexs.blasux.ru/dump/linux-image-3.19.0-imxv5-x0.1_3.19-imxv5-x0.1%2Bwb20151120134654_armel.deb
Отдельно dtb: http://lexs.blasux.ru/dump/imx23-wirenboard32-rfm69-raw.dtb

Т.е. dtb я правильно поменять в uEnv.txt? чтобы заработал интерфейс к rfm через lirc, это нужно сделать?
UPD: Сам спросил, сам ответил - все /dev/lirc0 появился.

@EvgenyBoger только добрался )

root@wirenboard:~# lsusb

unable to initialize libusb: -99
root@wirenboard:~#
root@wirenboard:~# ifconfig -a

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:39856634 errors:0 dropped:0 overruns:0 frame:0
TX packets:39856634 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3251674608 (3.0 GiB) TX bytes:3251674608 (3.0 GiB)

sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

root@wirenboard:~#

У вас что-то безумное случилось с прошивкой. Рекомендую накатить образ заново с нуля.