test
|
1 2 3 |
stty -F /dev/ttyUSB0 9600 raw -echo -echoe -echok -echoctl -echoke cat /dev/ttyUSB0 while : ; do echo -n "TEST123" > /dev/ttyUSB0 ; sleep 1 ; done |
test
|
1 2 3 |
stty -F /dev/ttyUSB0 9600 raw -echo -echoe -echok -echoctl -echoke cat /dev/ttyUSB0 while : ; do echo -n "TEST123" > /dev/ttyUSB0 ; sleep 1 ; done |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Поиск usb устройств lsubs lsusb -d 1e0e:9001 lsusb -v 1e0e:9001 dmesg | grep usb # Перенаправляем ответ из порта в фоновое чтение cat /dev/ttyUSB2 & # Отправляем команду AT (проверка связи) echo -e "AT\r" > /dev/ttyUSB2 # Отправляем команду получения информации о модели echo -e "ATI\r" > /dev/ttyUSB2 Для работы с модемом SIMCom в Linux интерфейсы обычно распределяются следующим образом: Интерфейс Назначение Для чего используется ttyUSB1 Audio Передача цифрового звука (в обычных сценариях не нужен). ttyUSB2 AT-команды Основной порт для опроса модема, проверки баланса, отправки SMS и ввода команд. ttyUSB3 Диагностика (Diag) Используется сервисными утилитами Qualcomm (например, QPST) для прошивки и калибровки. ttyUSB4 Модемный порт / NMEA Вывод GPS/ГЛОНАСС логов (если включена навигация) или резервный канал. |
Скрипт теста модема:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
root@napi2:/etc/network/interfaces.d# cat 1.txt PORT=/dev/ttyUSB2 stty -F $PORT 115200 raw -echo # выключаем эхо команд echo -e 'ATE0\r' > $PORT; sleep 0.3 # читаем порт в фоне cat $PORT & CAT=$! sleep 0.3 for CMD in "ATI" "AT+CPIN?" "AT+CSQ" "AT+CREG?" "AT+COPS?" "AT+CGMM" "AT+CGMI" "AT+CGDCONT?"; do echo -e "${CMD}\r" > $PORT sleep 0.5 done sleep 1 kill $CAT 2>/dev/null |
Set APN:
|
1 2 3 4 5 6 7 8 9 10 |
PORT=/dev/ttyUSB2 stty -F $PORT 115200 raw -echo cat $PORT & CAT=$! sleep 0.2 echo -e 'AT+CGDCONT=1,"IP","internet.tele2.ru"\r' > $PORT; sleep 0.5 echo -e 'AT+CGDCONT?\r' > $PORT; sleep 0.5 echo -e 'AT+CGACT=1,1\r' > $PORT; sleep 2 echo -e 'AT+CGPADDR=1\r' > $PORT; sleep 0.5 kill $CAT |
Check interface:
|
1 |
ip -br a |
If RNDIS/wwan0 exists:
|
1 2 |
ip link set wwan0 up dhcpcd wwan0 |
Запрос номера
|
1 2 3 4 5 6 7 8 |
PORT=/dev/ttyUSB2 stty -F $PORT 115200 raw -echo 2>/dev/null cat $PORT & CAT=$!; sleep 0.2 echo -e 'ATE0\r' > $PORT; sleep 0.2 echo -e 'AT+CNUM\r' > $PORT; sleep 1 kill $CAT 2>/dev/null |
Отправка sms:
|
1 2 3 |
echo -e 'AT+CMGF=1\r' > /dev/ttyUSB2; sleep 0.3 echo -e 'AT+CMGS="+7XXXXXXXXXX"\r' > /dev/ttyUSB2; sleep 0.5 echo -e 'test\x1A' > /dev/ttyUSB2; sleep 3 |
Узнать номер:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
tmux В одном окне: cat /dev/ttyUSB2 Во втором: echo -e 'AT+CUSD=1,"*100#",15\r' > /dev/ttyUSB2; sleep 3 Например ответ: +CUSD: 0,"04230441043B0443043304300020043D04350434043E044104420443043F043D0430002E",72 закодирован в UCS2 (UTF-16BE) 0423 0441 043B 0443 0433 0430 0020 043D 0435 0434 043E 0441 0442 0443 043F 043D 0430 002E У с л у г а ␣ н е д о с т у п н а . |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
софт: сайт: https://napiworld.ru/docs/computers/napi2/ https://rkdevtool.com/rock-file/ образ bootloader: https://dl.radxa.com/rock3/images/loader/rk356x_spl_loader_ddr1056_v1.12.109_no_check_todly.bin napi2: https://download.napilinux.ru/linuximg/napi2/armbian-ditrib/vendor/ 0. Выключить плату и отключить БП и скачать образы и установить софт rkdevtool 1. Воткнуть в синий порт USB3.0 кабель папа-папа (на лицевой стороне где все порты hdmi, сеть и т.д.) 2. По желанию на несушке есть консоль uart ( понадобится кабель type-c) 3. Нажать кнопку максрома (рядом со слотом сдкарты на плате напи2) 4. Воткнуть кабель type-c (рядом с USB3.0) (отуда будет подано питание) 6. Отпустить кнопку 7. Проверяем обнаружение напи rkdevtool ld буквы циферы и в конце фраза Maskrom 8. зашиваем лодер rkdeveloptool db rk356x_spl_loader_ddr1056_v1.12.109_no_check_todly.bin 9. Зашиваем прошивку rkdeveloptool wl 0 Тут_имя_распаковоной_прошивки.img |
info
|
1 |
Суть создать контейнер и в нем собрать образ любой фигни из гита. |
Полная очистка (если пересобираем с нуля)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Выйти из контейнера, если сидишь в нём exit cd /opt/build-linux-system docker compose down docker rmi my-builder docker rm -f armbian-ophub #docker image prune -a #удаляет вообще все образы #docker container prune Выходим из каталога: cd Удаляем все связанное с нашей сборкой: sudo rm -rf /opt/build-linux-system |
Пример:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
0. Создаем каталог mkdir /opt/build-linux-system cd /opt/build-linux-system 1. Создаем файлы конфигов докеров и композа cat > Dockerfile << "EOF" FROM debian:bookworm ENV DEBIAN_FRONTEND=noninteractive # 1. Сначала ставим ca-certificates, чтобы работали защищенные соединения RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* # 2. Добавляем КОРРЕКТНЫЙ репозиторий testing и ставим свежий qemu-user-static RUN echo "deb http://deb.debian.org/debian testing main" > /etc/apt/sources.list.d/testing.list && \ apt-get update && apt-get install -y --no-install-recommends -t testing qemu-user-static && \ rm /etc/apt/sources.list.d/testing.list && \ rm -rf /var/lib/apt/lists/* # 3. Устанавливаем все остальные пакеты из bookworm RUN apt-get update && apt-get install -y --no-install-recommends \ git curl wget sudo bc build-essential bison flex \ libssl-dev libncurses-dev device-tree-compiler \ python3 python3-pip python3-setuptools swig libpython3-dev \ rsync cpio kmod fakeroot debootstrap binfmt-support \ dosfstools parted gdisk util-linux e2fsprogs mtools u-boot-tools \ nano vim less tree htop procps uuid-runtime udev \ gcc-11 g++-11 \ && rm -rf /var/lib/apt/lists/* RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 && \ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 WORKDIR /work CMD ["bash"] EOF cat > docker-compose.yaml << "EOF" services: builder: build: . image: my-builder:latest container_name: builder privileged: true volumes: - ./work:/work - /dev:/dev working_dir: /work stdin_open: true tty: true command: bash EOF cat > .dockerignore << 'EOF' work/ output/ cache/ *.log EOF 2. Создаем директорию mkdir work 3. Включить qemu для ARM (один раз на хосте): docker run --privileged --rm tonistiigi/binfmt:latest --install all 3.1 Добавить луп устройства sudo modprobe loop max_loop=64 проверка: cat /proc/sys/fs/binfmt_misc/qemu-aarch64 # в строке flags должен быть F 4. Собрать образ (один раз и после правок Dockerfile) #docker compose build docker compose build --no-cache docker compose up -d 5. Зайти в контейнер (войти в VM): docker compose exec builder bash pwd # ожидаем /work ps aux | grep udev # udevd должен быть запущен ls -la /dev/loop* # loop-устройства видны В контейнере проверяем: cat /proc/sys/fs/binfmt_misc/qemu-aarch64 Если пусто то выполняем: mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc 6. Качаем репозиторий cd /work git clone -b napi-boards https://github.com/QwaSeeK/build.git cd build 7. Сборка: для напи2 (первый раз): ./compile.sh BOARD=napi2 BRANCH=current RELEASE=bookworm EXPERT=yes CPUTHREADS=2 #./compile.sh BOARD=napi2 BRANCH=current BUILD_DESKTOP=no BUILD_MINIMAL=no CPUTHREADS=2 EXPERT=yes KERNEL_CONFIGURE=no RELEASE=bookworm для napi2 (первый раз после сбоев): ./compile.sh BOARD=napi2 BRANCH=current RELEASE=bookworm EXPERT=yes CLEAN_LEVEL=make,dkms CPUTHREADS=2 для napi2 (последующие): ./compile.sh BOARD=napi2 BRANCH=current RELEASE=bookworm EXPERT=yes для napi-c: ./compile.sh BOARD=napi-c BRANCH=current RELEASE=bookworm EXPERT=yes 8. Для выхода на хост написать: exit 9. Готовый образ окажется на хосте в: ./work/build/output/ P.S. Проблема при зборке: # Сначала полностью сбросьте старые регистрации docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # Попробуйте версию 7.0.0, которая считается стабильной (Если 7.0.0 не поможет, попробуйте 8.1.5) docker run --privileged --rm tonistiigi/binfmt:qemu-v7.0.0-28 --install arm64 docker run --privileged --rm tonistiigi/binfmt:qemu-v8.1.5 --install arm64 Проверка и уборка лишнего: docker compose ps # что запущено docker compose down # остановить docker system df # сколько места занято docker compose build --no-cache # Принудительно пересобрать без кэша Команды для изучения что можно собрать ядра/софт: Доступные борды napi: grep -r "KERNEL_TARGET" config/boards/ | grep -i napi | grep -v bana Что собирается: cat config/boards/napi-c.csc cat config/boards/napi2.csc Еще информации: cat config/sources/families/rk35xx.conf Очистка: cd /work/build rm -rf output/logs output/images cache/armbian # или CLEAN_LEVEL=make,dkms в команде |
Сборка с ядром 5.10.160
|
1 |
./compile.sh BOARD=rock-3a BRANCH=vendor RELEASE=bookworm EXPERT=yes CLEAN_LEVEL=make,dkms CPUTHREADS=2 USE_CCACHE=yes |
FT4232H
|
1 2 3 4 5 6 7 |
FT4232H переключить в режим MODBUS 485 https://manpages.debian.org/testing/ftdi-eeprom/ftdi_eeprom.1.en.html https://netcup-03.armbian.com/dl/rockpi-s/archive/Armbian_26.2.1_Rockpi-s_trixie_current_6.18.9_minimal.img.xz PID 6011 = FT4232H в режиме Quad UART (4 последовательных порта) PID 6014 = FT4232H в режиме Quad UART/FIFO (с поддержкой дополнительных режимов) |
napic arbian
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
0. Дистрибутив: Armbian_26.2.1_Rockpi-s_trixie_current_6.18.9_minimal 1. Оверлеи: /boot/armbianEnv.txt overlays=otg-host 2. Костюмные оверлеи от напи: команда для добавления: armbian-add-overlay <файл.dts> инструкция: https://napiworld.ru/recipes/armbian-tuning/ где брать файлы: https://gitlab.nnz-ipc.net/pub/napilinux/kernel/-/tree/linux6.6/arch/arm64/boot/dts/rockchip/overlay 3. Необходимый софт установка: apt update apt install libftdi1-2 libftdi-dev ftdi-eeprom gcc libftdi1-dev libftdi1 libudev-dev 4. Проверка usb: lsusb lsusb -v -d 0403:6011 | grep -i "serial\|product" Выгрузка модулей если требуется: rmmod ftdi_sio rmmod usbserial 5. ДОКИ /usr/share/doc/ftdi-eeprom/examples/ zcat /usr/share/doc/ftdi-eeprom/example.conf.gz 6. Пример конфигурационный файл для прошивки FT4232 в режиме MODBUS 485: cat > ft4232h.conf << EOF # Имя файла, содержащий образ EEPROM, который будет создан filename=test.bin # Идентификатор производителя. Для FT4232H значение по умолчанию: 0x0403 vendor_id=0x0403 # Идентификатор продукта. Для FT4232H значение по умолчанию: 0x6011 product_id=0x6011 # Тип EEPROM микросхемы. 0x46 для 93xx46, 0x56 для 93xx56 и 0x66 для 93xx66 #eeprom_type=0x46 eeprom_type=0x56 manufacturer="lablab2" product="Quad RS485" serial="1234" # Разрешить использование серийного номера use_serial=true # Ограничение по потреблению микросхемы: (значение параметра) * 2 мА. Значение параметра # должно быть равно 0, когда self_powered=true #max_power=0 #max_power=500 # Микросхема питается не от USB, а от собственного источника питания #self_powered=true #self_powered=false # Если на линии RI логический 0 и значение параметра равно true, то хост контроллер USB # выйдет из режима ожидания примерно через 20 мс. # remote_wakeup=false #remote_wakeup=true # Задать режим работы порта # # "UART", "FIFO", "OPTO", "CPU", "FT1284" #cha_type=UART #chb_type=FIFO #chc_type=OPTO #chd_type=CPU # Использовать драйвер виртуального com-порта #cha_vcp=true #chb_vcp=true #chc_vcp=true #chd_vcp=true # Разрешить режим RS-485 #cha_rs485=true #chb_rs485=true #chc_rs485=true #chd_rs485=true # Channel A cha_type=UART cha_vcp=true cha_rs485=true #cbush0 = TXDEN # Channel B chb_type=UART chb_vcp=true chb_rs485=true # Channel C #chc_type=UART chc_vcp=true chc_rs485=true #CDBUS7=TXDEN # Channel D #chd_type=UART chd_vcp=true chd_rs485=true #DDBUS7=TXDEN # Управление направлением (TXDEN) # invert_txd = true EOF 7. Работа с прошивкой ft4232 Зашить: ftdi_eeprom --flash-eeprom ft4232h.conf прочитать: ftdi_eeprom --read-eeprom ft4232h.conf |
Сборка libftdi
|
1 2 3 4 5 6 7 8 9 |
Собирем сам соберется, но тут 0.17 :( cd /opt git clone https://github.com/lipro/libftdi cd libftdi mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX="/usr" ../ make make install |
Собираем с сайта libftdi
|
1 2 3 4 5 6 7 8 9 10 11 |
###https://www.intra2net.com/en/developer/libftdi/download.php ###Requirements and dependencies ###libusb 1.0 - Library for talking to USB devices from user-space. Needed by libftdi. ###libconfuse - Library for parsing configuration files. Needed by ftdi_eeprom. ### wget https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.5.tar.bz2 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX="/usr" ../ make make install |
Питон скрипт для тестов:
|
1 |
Python env:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
0. Установите пакеты: apt update && apt install python3-venv python3-full -y 1. Создайте виртуальное окружение (например, в папке myenv): python3 -m venv myenv 2. Активируйте его: source myenv/bin/activate 3. Установите библиотеку: pip install minimalmodbus 4. Пере использование окружения: cd /root/myenv source /root/myenv/bin/activate Запуск python read_modbus.py |
Python скрипты для тестов:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
cat > 1.txt << "EOF" import minimalmodbus import serial # Настройка порта instrument = minimalmodbus.Instrument('/dev/ttyUSB0', slaveaddress=1) instrument.serial.baudrate = 9600 instrument.serial.bytesize = 8 instrument.serial.parity = serial.PARITY_NONE instrument.serial.stopbits = 1 instrument.serial.timeout = 1.0 # Самая важная строчка для FTDI под Linux: # Драйвер очистит входной буфер от эха сразу после отправки запроса instrument.serial.flushInput() try: # Читаем 1 регистр (holding) с адреса 769 (в mbpoll это -r 769 -t 4) # minimalmodbus использует адресацию от 0, поэтому проверяем 769 или 768 в зависимости от карты регистров устройства value = instrument.read_register(769, functioncode=3) print(f"Значение регистра: {value}") except Exception as e: print(f"Ошибка чтения: {e}") EOF python 1.txt cat > 2.txt << "EOF" import serial import time # Настройки порта ser = serial.Serial( port='/dev/ttyUSB0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1.0 ) # Формируем запрос Modbus RTU (тот самый, что слал mbpoll) # Чтение 1 регистра с адреса 769 (0x0301) для устройства 1 request = b'\x01\x03\x03\x00\x00\x01\x84\x4E' # Очищаем буферы ser.reset_input_buffer() ser.reset_output_buffer() # Отправляем запрос ser.write(request) ser.flush() # Ждем ответа и вычитываем порцию (запрос занял время, плюс ответ) time.sleep(0.1) # Читаем сырые данные raw_response = ser.read(ser.in_waiting) print(f"Сырой ответ из порта: {raw_response}") # Отсекаем эхо, если оно есть (ищем начало нашего ответа с адреса \x01) # Если устройство вернуло 7 байт, как в ошибке: if len(raw_response) >= 7: # Если в начале висит эхо запроса (8 байт), отрезаем его if raw_response.startswith(request): response = raw_response[len(request):] else: response = raw_response print(f"Пакет после отсечения эха: {response}") if len(response) >= 7: # Извлекаем данные из 4-го и 5-го байта (индексы 3 и 4) high_byte = response[3] low_byte = response[4] value = (high_byte << 8) + low_byte print(f"🎉 Успешно! Значение регистра: {value}") else: print("Не удалось получить полный ответ от устройства.") ser.close() EOF python 2.txt cat > rs485.py << "EOF" import os import fcntl import struct import sys TIOCGRS485 = 0x542E TIOCSRS485 = 0x542F SER_RS485_ENABLED = 0x01 SER_RS485_RX_DURING_TX = 0x08 def set_rs485(port, enable=True): fd = os.open(port, os.O_RDWR | os.O_NOCTTY) try: # Читаем текущие настройки buf = fcntl.ioctl(fd, TIOCGRS485, struct.pack('8I', 0,0,0,0,0,0,0,0)) flags = struct.unpack('8I', buf)[0] if enable: flags |= SER_RS485_ENABLED flags &= ~SER_RS485_RX_DURING_TX else: flags &= ~SER_RS485_ENABLED fcntl.ioctl(fd, TIOCSRS485, struct.pack('8I', flags, 0,0,0,0,0,0,0)) finally: os.close(fd) if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python rs485.py /dev/ttyUSB0") sys.exit(1) set_rs485(sys.argv[1], True) EOF python3 rs485.py /dev/ttyUSB0 python3 rs485.py /dev/ttyUSB1 python3 rs485.py /dev/ttyUSB2 python3 rs485.py /dev/ttyUSB3 |
mbpoll и modpoll:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
0. датчик: holding (output) регистры: 768 температура * 10 796 влажность *10 ID, по умолчанию 1. Как изменить пока не ясно. 13 скорость, по умолчанию 3 - 9600 14 чётность, по умолчанию 0 - NONE 1279 коррекция температуры 1280 коррекция влажности В некоторых сниферах и OPC серверах надо указывать адрес на 1 больше. 1. Пример команд: mbpoll -m rtu -a 1 -r 769 -c 1 -t 4 -b 9600 -P none -v /dev/ttyUSB0 modpoll -b 9600 -p none -m rtu -a 1 -r 769 -c 1 -t 4 -1 /dev/ttyUSB1 for i in 0 1 2 3 ; do modpoll -b 9600 -p none -m rtu -a 1 -r 769 -c 1 -t 4 -1 /dev/ttyUSB$i sleep 2 done for port in 0 1 2 3 ; do for reg in 768 796 1279 1280 ; do modpoll -b 9600 -p none -m rtu -a 1 -r $reg -t 4 -c 1 -1 /dev/ttyUSB$port sleep 1 done done screen /dev/ttyUSB0 9600 cs8 -parenb -cstopb stty -F /dev/ttyUSB0 9600 raw -echo; cat /dev/ttyUSB0 socat -d -d OPEN:/dev/ttyUSB0,b9600,rawer,echo=0 SYSTEM:'tee /tmp/tty.log | socat - "OPEN:/dev/ttyUSB0,b9600,rawer,echo=0"' 2. Тесты: while true; do echo "x" > /dev/ttyUSB0; sleep 0.1; done 3. Снять блокировку если нужно rm -f /var/lock/LCK..ttyUSB0 |
links:
|
1 2 3 |
https://wiki.homed.dev/ https://wiki.homed.dev/zigbee/ http://wiki.homed.dev/web/ |
Debian 13 install
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
0. Ставим пакеты (нужны были в процессе установки): apt update apt install vim tmux wget htop lm-sensors apt install -y mosquitto mosquitto-clients 1. Добавляем репозиторий homed (делаю все от root) wget -O /etc/apt/trusted.gpg.d/debian-homed.asc https://apt.homed.dev/apt.key echo "deb https://apt.homed.dev/ debian main" | tee /etc/apt/sources.list.d/homed.list apt update 2. Ставлю homed-zigbee, hommed-web apt install homed-zigbee homed-web 3. Редактируем конфиг cat > /etc/homed/homed-zigbee.conf << "EOF" [log] enabled=false file=/var/log/homed.log [mqtt] host=localhost port=1883 username= password= prefix=homed instance= names=false debounce=true [homeassistant] enabled=false prefix=homeassistant status=homeassistant/status [default] discovery=true cloud=true [device] database=/opt/homed-zigbee/database.json properties=/opt/homed-zigbee/properties.json options=/opt/homed-zigbee/options.json ota=/opt/homed-zigbee/ota external=/opt/homed-zigbee/external library=/usr/share/homed-zigbee expose=/usr/share/homed-common/expose.json [gpio] status=-1 blink=-1 boot=-1 reset=-1 [zigbee] adapter=znp port=/dev/ttyACM0 baudrate=115200 panid=0x076a channel=12 reset=soft write=true [security] key=0x2f9bf5a0967b4f04d7751f122db86350 [debug] port=false adapter=false zigbee=false EOF |
Link:
|
1 |
https://github.com/rockchip-linux/rkdeveloptool |
Install
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
0. Ставим пакеты: apt install git libudev-dev libusb-1.0-0-dev dh-autoreconf # На случай ошибки при configure с libusb, нужно доставить эти пакеты: apt install pkg-config libusb-1.0 1. Качаем дистрибутив rkdevtool cd /opt git clone https://github.com/rockchip-linux/rkdeveloptool 2. Входим в каталог cd /opt/rkdeveloptool 3. Выполняем: ./autogen.sh 4. Выполняем: ./configure !!! если все успешно то у вас появится Makefile 5. Производим сборку make 6. Производим установку в систему: make install |
Основные команды:
|
1 2 3 |
rkdevtool ld - показать устройства в maskrom rkdevtool db name_boot_loder - загрузка загрузчика (мелкий файл) rkdevtool wl 0 name_image - загрузка образа системы (большой файл) |
Пустой образ или затереть nand:
|
1 2 3 4 5 |
создаем образ пустой dd if=/dev/zero cont=500 bs=1M of=zero.img rkdevtool db грузим_загручик записываем пустышку rkdevtool wl 0 zero.img |
Перезагрузка в режим загрузчика (maskrom)
|
1 |
sudo rkdeveloptool rd 3 |
Стереть всю флеш-память
|
1 |
sudo rkdeveloptool ef |
Очистка emmc из uboot:
|
1 |
mmc erase 0 10000 |
Пример загрузки в лоадер из uboot:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
0. в uboot на слоте rockusb 0 mmc 1 1. Далее я в консоле на AP6 выполнил команды: 1.1 Посмотрел доступные устройства rkdeveloptool ld 1.2 Перевел плату в режим maskrom rkdeveloptool rd 3 1.3 Зашил загрузчик: rkdeveloptool db rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin 1.4 Зашил прошивку предворительно распоковав: unxz Armbian-napilab_30Apr-1800_emmc_Napic_noble_current_6.12.84_minimal.img.xz rkdeveloptool wl 0 Armbian-napilab_30Apr-1800_emmc_Napic_noble_current_6.12.84_minimal.img |
Пример загрузки в maksrom loadrer из linux
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Выполняем на плате в линуксе: reboot loader На хосте к которому плата подключена по usb: sudo rkdeveloptool ld Увидим: DevNo=1 Vid=0x2207,Pid=0x330d,LocationID=104 Loader переводим ее максром: sudo rkdeveloptool rd 3 проверяем что изменилось: sudo rkdeveloptool ld должны увидеть: DevNo=1 Vid=0x2207,Pid=0x330e,LocationID=104 Maskrom |
Link:
|
1 2 3 |
https://www.zigbee2mqtt.io/ https://www.zigbee2mqtt.io/guide/installation/01_linux.html https://docs.jethome.ru/ru/controllers/linux/howto/zigbee2mqtt.html |
Setup:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# Ставлю под рутом ^_^ 0. Ставим пакеты: apt-get install -y curl curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - apt-get install -y nodejs git make g++ gcc libsystemd-dev tmux apt install -y mosquitto mosquitto-clients corepack enable 1. Создадим каталог mkdir /opt/zigbee2mqtt 2. На случай если ставили не от рута нужно дать права на каталог sudo chown -R ${USER}: /opt/zigbee2mqtt 3. Скачиваем гит в каталог git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt 4. Переходим в каталог: cd /opt/zigbee2mqtt 5. Запустим tmux и продолжим сборку в нем: tmux 6. Собираем приложение: pnpm install --frozen-lockfile 6.1 !!! Вот тут могут возникнуть проблемы, если у вас мало оперативки скорее всего сборка зависнет, запустим в один поток сборку pnpm install --frozen-lockfile --child-concurrency=1 7. После сборки выполняем запуск: cd /opt/zigbee2mqtt pnpm start |
Пример сервиса:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cat > /etc/systemd/system/zigbee2mqtt.service << "EOF" [Unit] Description=zigbee2mqtt After=network.target [Service] Environment=NODE_ENV=production Type=simple ExecStart=/usr/bin/pnpm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable zigbee2mqtt.service systemctl start zigbee2mqtt.service systemctl status zigbee2mqtt.service journalctl -u zigbee2mqtt.service -f |
Update Zigbee2MQTT to the latest version
|
1 2 |
cd /opt/zigbee2mqtt ./update.sh |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
0. Подготовка системы debian/ubuntu: apt install lz4 vim sudo gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pyelftools python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm 1. Опционально, команда python выполняет python3 update-alternatives --install /usr/bin/python python /usr/bin/python3 1 2. Настраиваем локаль: vim /etc/locale.gen ------------------- en_US.UTF-8 <---------- найти и раскоментить ------------------ Перечитать local: locale-gen На этом все, теперь у вас должна появится local en_US.UTF-8 3. Создаем пользователя например useryocto useradd useryocto Входим под пользователем useryocto su - useryocto 4. Создаем директорию yocto и cкачиваем репазитори napi mkdir yocto cd yocto git clone --depth 1 git://git.yoctoproject.org/poky -b kirkstone cd poky git clone --depth 1 git://git.openembedded.org/meta-openembedded.git -b kirkstone git clone --depth 1 git://git.yoctoproject.org/meta-arm.git -b kirkstone git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-influx.git -b kirkstone git clone --depth 1 https://gitlab.nnz-ipc.net/pub/napilinux/meta-nnz.git -b kirkstone git clone --depth 1 https://github.com/sbabic/meta-swupdate -b kirkstone git clone git://git.yoctoproject.org/meta-raspberrypi -b kirkstone 5. После загрузки выполняем source oe-init-build-env 6. На этом этапе мы можем скопировать настроенные слои # napi image : # -- # cp ../meta-nnz/conf/bblayers.conf.sample.napi conf/bblayers.conf # frontcontrol image: # -- # cp ../meta-nnz/conf/bblayers.conf.sample.fc conf/bblayers.conf Я копирую слой для rpi cp ../meta-nnz/conf/bblayers.conf.sample.rpi conf/bblayers.conf 7. Еще нужно добавить основной конфиг в котором мы в будущем выберем нужную платформу cp ../meta-nnz/conf/local.conf.sample conf/local.conf 8. Редактируем файл local.conf vim conf/local.conf --------------------------- MACHINE ?= "napi-rk3308b-s" <----------------- ищем строку MACHINE --------------------------- Возможные варианты: MACHINE ?= "napi-rk3308b-s" MACHINE ?= "napi-rk3308" MACHINE ?= "roc-pc-rk3328" MACHINE ?= "rockpro64-rk3399" 9. Сборка Возможные варианты сборки: nnz-frontcontrol-image nnz-napi-image nnz-napi-image-dev nnz-napi-image-dev-noupdate Пример сборки: bitbake -k nnz-frontcontrol-image Загрузка исходников без сборки: bitbake nnz-frontcontrol-image --runall=fetch bitbake nnz-napi-image --runall=fetch bitbake nnz-napi-image-dev --runall=fetch bitbake nnz-napi-image-dev-noupdate --runall=fetch Ошибка: Я собирал от пользователя user и архивы закинул другому пользователю и получил ошибку: Error, TMPDIR has changed location. You need to either move it back to /home/user/yocto/poky/build/tmp or delete it and rebuild Просто удалил файлы сборки из tmp, так как в архиве были нужные исходники для сборки, а самой сборки не производилось. rm -rf ~/yocto/poky/build/tmp 10. Собранные имеджи искать тут: ~/yocto/poky/build/tmp/deploy/images 11. Учетные данные по умолчанию. Username: root Password: napilinux |
Прошивка napi (rk3308)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
Ссылки: бутлодеры: https://dl.radxa.com/rockpis/images/loader/ Образы napi: https://download.napilinux.ru/linuximg/ Компоненты для rkdeveloptool sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf rkdeveloptool git clone https://github.com/rockchip-linux/rkdeveloptool cd rkdeveloptool autoreconf -i ./configure make cp rkdeveloptool /usr/local/bin/ Убедится что нету других rkdeveloptool whereis rkdeveloptool Команды rkdeveloptool rkdeveloptool - справка rkdeveloptool ld - лист устройств rkdeveloptool db <файл загрузчика> - загрузка бутлодера rkdeveloptool wl 0 <файл образа> - загрузка прошивки Порядок прошивки: 0. нажимаем и удерживаем клавишу Maskrom, затем коротко нажимаем клавишу Reset не отпускаем Maskrom, через несколько секунд отпускаем Maskrom; 1. Грузим бутлодер sudo rkdeveloptool db rk3308_loader_uart0_m0_emmc_port_support_sd_20190717.bin Или sudo rkdeveloptool db rk3308_loader_ddr589MHz_uart0_m0_v2.06.136sd.bin !!! Если бутлодер не правильный или вы его не загрузили, то получите ошибку: Write LBA failed! 2. Прошиваем прошивку sudo rkdeveloptool wl 0 <файл образа> Пример: rkdeveloptool wl 0 napi-rk3308b-s-latest-dev.img P.S Очистка nand: Создаем пустой файл с помощью dd dd if=/dev/zero of=./zero.img bs=4M count=10 Шьем этим файлом. rkdeveloptool db <файл загрузчика> - загрузка бутлодера rkdeveloptool wl 0 zero.img minicom -D /dev/ttyUSB1 -b15000000 |
Links:
|
1 |
https://www.modbusdriver.com/modpoll.html |
Начало:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
## Что у нас есть /dev/ttyS0 - порт 485 на напи 115200 - скорость полярность: a + b - Для GW modbus: 1 . Создать необходимые директории и файлы: #/etc/mbusd/mbusd-ttyS0.conf # Внимание имя конфиг файла должно иметь правильное название # для mbusd@ttyS1.service файл будет иметь название mbusd-ttyS1.conf и etc. # а иначе если файла не будет, то сервис запустится с параметрами по умолчанию mkdir /etc/mbusd touch /etc/mbusd/mbusd-ttyS0.conf 2. Запуск демона. systemctl enable mbusd@ttyS0.service systemctl start mbusd@ttyS0.service systemctl status mbusd@ttyS0.service 3. Настроить правильно конфиг: Пример конфига: https://github.com/3cky/mbusd/blob/master/conf/mbusd.conf.example Тут нужно поменять : device = /dev/ttyS3 speed = 115200 maxconn = 100 timeout = 10 pause = 50 wait = 50 |
default conf:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
############################################# # # # Sample configuration file for mbusd # # # ############################################# ########## Serial port settings ############# # Serial port device name device = /dev/ttyS0 # Serial port speed speed = 9600 # Serial port mode mode = 8n1 # RS-485 data direction control type (addc, rts, sysfs_0, sysfs_1) trx_control = addc # Sysfs file to use to control data direction # trx_sysfile = ############# TCP port settings ############# # TCP server address to bind address = 0.0.0.0 # TCP server port number port = 502 # Maximum number of simultaneous TCP connections maxconn = 32 # Connection timeout value in seconds timeout = 60 ######### Request/response settings ######### # Maximum number of request retries retries = 3 # Pause between requests in milliseconds pause = 100 # Response wait time in milliseconds wait = 500 # Reply on Broadcast replyonbroadcast = no |
modpoll:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
https://www.modbusdriver.com/modpoll.html cd /opt wget https://www.modbusdriver.com/downloads/modpoll.tgz tar -xvf modpoll.tgz cd modpoll #arm cp /opt/modpoll/arm-linux-gnueabihf/modpoll /usr/bin/ mbpoll -b 9600 -p none -m rtu -a 1 -r 515 /dev/ttyS3 modpoll -m tcp -t3 -a1 -r 515 -c 1 192.168.16.153 modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 512 /dev/ttyUSB0 modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 512 /dev/ttyUSB1 modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -c 10 /dev/ttyS1 modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 1 -c 62 /dev/ttyS1 modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 1 -c 1 /dev/ttyS1 modpoll -m rtu -a 1 -b 9600 -p none -t 4:int -r 99 -c 1 /dev/ttyS1 modpoll -m rtu -a 1 -b 9600 -p none -r 1 -c 125 /dev/ttyS1 modpoll -m rtu -a 1 -b 9600 -p none -t 4:hex -r 1 -c 125 /dev/ttyS1 modpoll -m rtu -b 9600 -p none -c 125 -a 1 -r 1 -0 /dev/ttyS1 modpoll -0 -b 9600 -p none -m rtu /dev/ttyS1 modpoll -0 -b 115200 -p none -m rtu -a 2 -t 3 -r 512 /dev/ttyS4 #napi dt jsw1003 modpoll -m rtu -a 1 -b 9600 -p none -r100 /dev/ttyS1 modpoll -m tcp -a1 -r 100 -c 1 192.168.16.147 #cm4 dt jsw1003 modpoll -m rtu -a 1 -b 9600 -p none -r100 /dev/ttyS7 |
Пример конфига:
|
1 2 3 4 5 6 7 8 |
root@napi-redkoala:~# cat /boot/uEnv.txt verbosity=7 fdtfile=rk3308-napi-c.dtb console=ttyS0,1152008 overlays=rk3308-usb20-host rk3308-i2c1-ds1307 rk3308-uart1 #overlays=rk3308-uart1 rk3308-uart2 rk3308-uart3 rk3308-i2c1-ds1338 rk3308-i2c3-m0 rk3308-usb20-host rk3308-spi1-w5500 kernelimg=Image extraargs= |
PM-3112-160
|
1 2 3 4 5 6 7 8 9 10 11 |
https://www.modbusdriver.com/modpoll.html mbpoll -0 -b 9600 -P none -a 1 -t 3 -r 515 /dev/ttyUSB0 modpoll -0 -b 9600 -p none -m rtu -a 1 -t 3 -r 515 /dev/ttyUSB0 FCU-3308: modpoll -0 -b 115200 -p none -m rtu -a 2 -t 3 -r 514 /dev/ttyS4 PM-3112-160 джамперы 1000000110 Настройки портов пример: stty -F /dev/ttyS3 #посмотреть текущие настройки stty -F /dev/ttyS3 115200 cs8 -parenb -cstopb #установить настройки |
FCU-3308
|
1 2 3 4 5 6 7 8 9 10 11 |
FCC-3308 PM-3112-160: modpoll -0 -b 9600 -p none -m rtu -a 2 -t 3 -r 514 /dev/ttyS1 FCC-3308 AMVDK15: modpoll -0 -b 9600 -p none -m rtu -a 1 -t 1 -r 1 /dev/ttyUSB0 FCC-3308 GT-TH-01: modpoll -0 -b 9600 -p none -m rtu -a 9 -r 1 /dev/ttyUSB0 FCC-3308 isp-con isn-101: modpoll -0 -b 9600 -p none -m rtu -a 96 -t 3 -r 5 /dev/ttyS1 |
FCC-MAX
|
1 2 |
modpoll -0 -b 9600 -p none -m rtu -a 2 -t 3 -r 514 /dev/ttyS4 modpoll -0 -b 9600 -p none -m rtu -a 96 -t 3 -r 5 /dev/ttyS4 |
FCU-CM4
|
1 2 |
current sensor: modpoll -0 -b 9600 -p none -m rtu /dev/ttyS7 |
napi FCC3308 add uart1
|
1 2 3 4 5 6 7 8 |
https://napiworld.ru/software/notes/armbian-tuning/ apt update apt upgrade -y apt install telnet mbpoll snmpd snmp-mibs-downloader vim cmake pkg-config plocate gh mosquitto mosquitto-clients python3-pip python3-dev wget https://gitlab.nnz-ipc.net/pub/napilinux/kernel/-/raw/linux6.6/arch/arm64/boot/dts/rockchip/overlay/rk3308-uart1.dts wget https://gitlab.nnz-ipc.net/pub/napilinux/kernel/-/raw/linux6.6/arch/arm64/boot/dts/rockchip/overlay/rk3308-usb20-host.dts armbian-add-overlay rk3308-uart1.dts armbian-add-overlay rk3308-usb20-host.dts |
overlay example
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
cat > rk3308-usb20-host.dts << EOF /dts-v1/; /plugin/; / { compatible = "rockchip,rk3308"; fragment@0 { target = <&usb20_otg>; __overlay__ { dr_mode = "host"; status = "okay"; }; }; fragment@1 { target = <&u2phy_host>; __overlay__ { status = "okay"; }; }; }; EOF armbian-add-overlay rk3308-usb20-host.dts |
Ссылки:
|
1 2 3 4 5 6 |
https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5S https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5S#Install_Flash_Image_File_to_eMMC https://download.friendlyelec.com/NanoPiR5S https://www.friendlyelec.com/index.php?route=product/product&product_id=287 https://cnx-software.ru/2022/06/03/obzor-marshrutizatora-nanopi-r5s-chast-1-raspakovka-openwrt-i-testov-s-pomoshhyu-iperf3/ https://cnx-software.ru/2022/06/07/predvaritelnyj-prosmotr-nanopi-r5s-chast-2-ubuntu-20-04-friendlycore/ |
Ссылки
|
1 2 3 4 |
https://wiki.radxa.com/RockpiS/dev/sdnand-install https://wiki.radxa.com/RockpiS https://opensource.rock-chips.com/wiki_Rkdeveloptool https://github.com/rockchip-linux/rkbin |