Update script flipper zero
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"sync_interval": 30.0
|
||||
},
|
||||
"flipper": {
|
||||
"enabled": false,
|
||||
"enabled": true,
|
||||
"device": "/dev/ttyAMA0",
|
||||
"baudrate": 115200,
|
||||
"send_interval": 1.0
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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. Создание директорий ===
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user