Update script flipper zero
This commit is contained in:
@@ -31,6 +31,7 @@ Running...
|
|||||||
### Hardware
|
### Hardware
|
||||||
- Raspberry Pi 5
|
- Raspberry Pi 5
|
||||||
- 2-CH CAN HAT (MCP2515 или MCP251xFD)
|
- 2-CH CAN HAT (MCP2515 или MCP251xFD)
|
||||||
|
- Flipper Zero (опционально, для мониторинга)
|
||||||
|
|
||||||
### Software
|
### Software
|
||||||
- Raspberry Pi OS Bookworm (64-bit recommended)
|
- Raspberry Pi OS Bookworm (64-bit recommended)
|
||||||
@@ -72,6 +73,50 @@ ip link show | grep can
|
|||||||
# Должны появиться can0 и can1
|
# Должны появиться 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. Клонирование репозитория
|
### 1. Клонирование репозитория
|
||||||
@@ -200,6 +245,46 @@ ls -la /opt/can_sniffer/data/
|
|||||||
# Синхронизация произойдёт автоматически когда PostgreSQL станет доступен
|
# Синхронизация произойдёт автоматически когда 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
|
```bash
|
||||||
|
|||||||
@@ -51,5 +51,9 @@ ReadWritePaths=/opt/can_sniffer/data /opt/can_sniffer/logs
|
|||||||
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
|
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
|
||||||
AmbientCapabilities=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]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
"sync_interval": 30.0
|
"sync_interval": 30.0
|
||||||
},
|
},
|
||||||
"flipper": {
|
"flipper": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"device": "/dev/ttyAMA0",
|
"device": "/dev/ttyAMA0",
|
||||||
"baudrate": 115200,
|
"baudrate": 115200,
|
||||||
"send_interval": 1.0
|
"send_interval": 1.0
|
||||||
|
|||||||
@@ -152,6 +152,52 @@ else
|
|||||||
warn "CAN Sniffer process not running"
|
warn "CAN Sniffer process not running"
|
||||||
fi
|
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)"
|
section "Network (PostgreSQL target)"
|
||||||
# Извлекаем хост из конфига
|
# Извлекаем хост из конфига
|
||||||
if [[ -f "$INSTALL_DIR/src/config.json" ]]; then
|
if [[ -f "$INSTALL_DIR/src/config.json" ]]; then
|
||||||
|
|||||||
@@ -81,6 +81,25 @@ if [[ -f "$CONFIG_TXT" ]]; then
|
|||||||
else
|
else
|
||||||
log_info "CAN HAT overlay found in config.txt"
|
log_info "CAN HAT overlay found in config.txt"
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
# === 3. Создание директорий ===
|
# === 3. Создание директорий ===
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ pydantic>=2.0.0
|
|||||||
pydantic-settings>=2.0.0
|
pydantic-settings>=2.0.0
|
||||||
python-can>=4.0.0
|
python-can>=4.0.0
|
||||||
psycopg2-binary>=2.9.0
|
psycopg2-binary>=2.9.0
|
||||||
|
pyserial>=3.5
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user