Update script flipper zero

This commit is contained in:
2026-01-26 22:49:13 +03:00
parent 9cfc348965
commit 32d5bd41d7
6 changed files with 156 additions and 1 deletions

View File

@@ -31,6 +31,7 @@ Running...
### Hardware
- Raspberry Pi 5
- 2-CH CAN HAT (MCP2515 или MCP251xFD)
- Flipper Zero (опционально, для мониторинга)
### Software
- Raspberry Pi OS Bookworm (64-bit recommended)
@@ -72,6 +73,50 @@ ip link show | grep can
# Должны появиться can0 и can1
```
## Настройка UART для Flipper Zero
Для работы с Flipper Zero через UART (`/dev/ttyAMA0`) необходимо:
### 1. Отключить serial console
```bash
sudo raspi-config
# Interface Options → Serial Port
# - Login shell over serial: NO
# - Serial port hardware enabled: YES
```
### 2. Добавить в `/boot/firmware/config.txt`:
```ini
# Enable UART
enable_uart=1
# На RPI5 освобождаем ttyAMA0 от Bluetooth
# Вариант 1: Полностью отключить BT (рекомендуется)
dtoverlay=disable-bt
# Вариант 2: Переместить BT на mini-UART
# dtoverlay=miniuart-bt
```
### 3. Перезагрузить и проверить:
```bash
sudo reboot
# После перезагрузки
ls -la /dev/ttyAMA0
# Должен показать устройство
# Тест чтения (Ctrl+C для выхода)
cat /dev/ttyAMA0
```
### 4. Подключение Flipper Zero
| Flipper Pin | RPI5 Pin |
|-------------|----------|
| TX | GPIO15 (RXD) |
| RX | GPIO14 (TXD) |
| GND | GND |
## Установка
### 1. Клонирование репозитория
@@ -200,6 +245,46 @@ ls -la /opt/can_sniffer/data/
# Синхронизация произойдёт автоматически когда PostgreSQL станет доступен
```
#### 5. Flipper Zero не подключается (нет handshake)
**Симптомы:** `cat /dev/ttyAMA0` показывает "INIT:flipper", но ACK не отправляется.
**Проверки:**
```bash
# 1. Проверить что flipper enabled в конфиге
grep -A5 '"flipper"' /opt/can_sniffer/src/config.json
# Должно быть: "enabled": true
# 2. Проверить что pyserial установлен
/opt/can_sniffer/venv/bin/pip show pyserial
# 3. Проверить права на UART
ls -la /dev/ttyAMA0
# crw-rw---- 1 root dialout ...
# 4. Проверить что пользователь в группе dialout
groups pi
# Должен содержать: dialout
# 5. Проверить что serial console отключена
sudo dmesg | grep ttyAMA0
# НЕ должно быть "console [ttyAMA0]"
# 6. Проверить логи flipper handler
sudo journalctl -u can-sniffer | grep -i flipper
```
**Типичные исправления:**
```bash
# Добавить в группу dialout
sudo usermod -aG dialout pi
# Перезапустить после изменения групп
sudo systemctl restart can-sniffer
# Или перелогиниться для применения группы
```
## Удаление
```bash

View File

@@ -51,5 +51,9 @@ ReadWritePaths=/opt/can_sniffer/data /opt/can_sniffer/logs
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN
# Доступ к UART для Flipper Zero (/dev/ttyAMA0)
SupplementaryGroups=dialout
DeviceAllow=/dev/ttyAMA0 rw
[Install]
WantedBy=multi-user.target

View File

@@ -28,7 +28,7 @@
"sync_interval": 30.0
},
"flipper": {
"enabled": false,
"enabled": true,
"device": "/dev/ttyAMA0",
"baudrate": 115200,
"send_interval": 1.0

View File

@@ -152,6 +152,52 @@ else
warn "CAN Sniffer process not running"
fi
section "UART / Flipper Zero"
UART_DEV="/dev/ttyAMA0"
if [[ -e "$UART_DEV" ]]; then
ok "UART device exists: $UART_DEV"
ls -la "$UART_DEV" | sed 's/^/ /'
# Проверить права
if [[ -r "$UART_DEV" ]] && [[ -w "$UART_DEV" ]]; then
ok "UART readable/writable by current user"
else
warn "UART not accessible by current user"
echo " Check: sudo usermod -aG dialout \$USER"
fi
# Проверить serial console
if dmesg 2>/dev/null | grep -q "console \[ttyAMA0\]"; then
fail "Serial console is using ttyAMA0!"
echo " Disable via: sudo raspi-config -> Interface Options -> Serial Port"
else
ok "Serial console not blocking ttyAMA0"
fi
else
warn "UART device not found: $UART_DEV"
echo " Check /boot/firmware/config.txt: enable_uart=1"
fi
# Проверить конфиг flipper
if [[ -f "$INSTALL_DIR/src/config.json" ]]; then
FLIPPER_ENABLED=$(grep -A2 '"flipper"' "$INSTALL_DIR/src/config.json" | grep '"enabled"' | grep -oE '(true|false)')
if [[ "$FLIPPER_ENABLED" == "true" ]]; then
ok "Flipper handler enabled in config"
else
warn "Flipper handler DISABLED in config"
fi
fi
# Проверить pyserial
if [[ -f "$INSTALL_DIR/venv/bin/pip" ]]; then
if "$INSTALL_DIR/venv/bin/pip" show pyserial &>/dev/null; then
ok "pyserial installed"
else
fail "pyserial NOT installed"
echo " Install: $INSTALL_DIR/venv/bin/pip install pyserial"
fi
fi
section "Network (PostgreSQL target)"
# Извлекаем хост из конфига
if [[ -f "$INSTALL_DIR/src/config.json" ]]; then

View File

@@ -81,6 +81,25 @@ if [[ -f "$CONFIG_TXT" ]]; then
else
log_info "CAN HAT overlay found in config.txt"
fi
# Проверяем UART для Flipper Zero
if ! grep -q "enable_uart=1" "$CONFIG_TXT"; then
log_warn "UART not enabled in $CONFIG_TXT"
log_warn "For Flipper Zero support, add to $CONFIG_TXT:"
echo ""
echo " enable_uart=1"
echo " dtoverlay=disable-bt # или dtoverlay=miniuart-bt"
echo ""
else
log_info "UART enabled in config.txt"
fi
fi
# Проверяем что serial console отключена
if grep -q "console=serial0" /boot/firmware/cmdline.txt 2>/dev/null || \
grep -q "console=ttyAMA0" /boot/firmware/cmdline.txt 2>/dev/null; then
log_warn "Serial console may be using ttyAMA0!"
log_warn "Disable via: sudo raspi-config -> Interface Options -> Serial Port"
fi
# === 3. Создание директорий ===

View File

@@ -2,4 +2,5 @@ pydantic>=2.0.0
pydantic-settings>=2.0.0
python-can>=4.0.0
psycopg2-binary>=2.9.0
pyserial>=3.5