DIY USB CD-ROM и LAN адаптер на Raspberry Pi Zero 2 W
- USB Gadget Mode - эмуляция CD-ROM через USB
- USB Ethernet - сетевой адаптер через USB (RNDIS)
- 1.3" ST7789 LCD - отображение меню и статуса
- WiFi управление - загрузка ISO через WebUI
- Captive Portal - настройка WiFi без подключения к сети
- Raspberry Pi Zero 2 W
- ST7789 1.3" LCD HAT (240x240)
- USB кабель (для питания и данных)
- MicroSD карта
- Raspberry Pi OS Lite (или совместимая)
- Python 3.9+
# Клонировать репозиторий
cd /opt
sudo git clone https://github.com/Sergey004/ZeroCD
cd ZeroCD
# Запустить установщик
sudo ./install.shУстановщик автоматически:
- Установит системные зависимости (hostapd, dnsmasq, iptables)
- Установит Python пакеты (Flask, Pillow, numpy)
- Скачает шрифты (Font Awesome, DejaVu Sans)
- Включит SPI интерфейс
- Создаст systemd сервис (опционально)
sudo python3 main.py| Кнопка | Действие |
|---|---|
| w/s | Навигация вверх/вниз |
| Enter | Выбрать ISO |
| d | Меню WiFi |
| q | Выход |
WebUI доступен только при подключённом WiFi и НЕ в режиме USB Gadget (для экономии питания).
http://<IP>:8080IP адрес отображается на дисплее при подключении к WiFi.
- Список ISO - просмотр и выбор загруженных образов
- Загрузка файлов - загрузка ISO с компьютера (drag&drop)
- Скачивание по URL - загрузка образов из интернета
- Настройки WiFi - подключение к сети, управление точками доступа
- Ubuntu Desktop 22.04/24.04
- Debian 12 Live
- Fedora Workstation
- Arch Linux
- Kali Linux
- Linux Mint
- Netboot.xyz
Если при загрузке не найдена сохранённая сеть, автоматически запускается точка доступа (Captive Portal).
- Подключитесь к точке доступа
ZeroCD-XXXX - Введите пароль (отображается на LCD)
- Откройте браузер - откроется страница настройки
- Введите данные вашей WiFi сети
- После подключения Captive Portal остановится
На LCD отображается QR код для быстрого подключения к точке доступа.
ZeroCD/
├── config.py # Конфигурация
├── main.py # Главная программа
├── install.sh # Скрипт установки
├── install_net.sh # Скрипт установки сети
├── requirements.txt # Python зависимости
├── splash.py # Заставка при запуске
├── ui/ # UI для LCD
│ ├── display.py # ST7789 драйвер
│ ├── renderer.py # Рендеринг текста и иконок
│ └── menu.py # Обработка меню
├── net/ # Сетевые функции
│ ├── wifi.py # WiFi менеджер
│ ├── captive.py # Captive Portal
│ └── nat.py # NAT конфигурация
├── web/ # WebUI
│ ├── server.py # Flask сервер
│ └── __init__.py
├── usb/ # USB Gadget
│ ├── gadget.py # USB настройка
│ ├── iso_manager.py# Управление ISO
│ ├── builder.py # Сборщик гаджета
│ └── network.py # USB сеть (RNDIS)
├── input/ # Ввод
│ └── joystick.py # GPIO джойстик
├── system/ # Система
│ ├── logger.py # Логирование
│ └── service_install.sh # Установка сервиса
├── scripts/ # Скрипты установки
│ ├── install_fonts.sh # Установка шрифтов
│ └── setup_mtp.sh # Настройка MTP
└── uMTP-Responder/ # MTP responder
└── conf/ # Конфигурационные файлы- Pi Zero 2 W only - требуется встроенный WiFi адаптер
- USB Gadget Mode - WebUI недоступен для экономии питания
- Один сетевой профиль - сохраняется только одна WiFi сеть
GPL-3.0 license
- Waveshare - драйвер ST7789
- Font Awesome - иконки