dreader-hal/INSTALL.md
2025-11-10 18:06:11 +01:00

219 lines
3.7 KiB
Markdown

# Installation Guide
## Prerequisites
### System Dependencies
#### Raspberry Pi
```bash
# Enable I2C and SPI
sudo raspi-config
# Navigate to: Interface Options > I2C > Enable
# Navigate to: Interface Options > SPI > Enable
sudo reboot
# Install development tools
sudo apt-get update
sudo apt-get install -y \
python3-dev \
python3-pip \
i2c-tools \
libjpeg-dev \
zlib1g-dev \
libfreetype6-dev \
liblcms2-dev \
libopenjp2-7 \
libtiff5
```
## Installation Steps
### 1. Install External Drivers
The HAL depends on external driver libraries in the `external/` directory. These need to be installed first.
#### IT8951 (E-ink Display)
```bash
cd external/IT8951
pip install ./[rpi] # On Raspberry Pi
# OR
pip install ./ # On desktop (virtual display only)
cd ../..
```
**Note**: IT8951 has Cython extensions that need to be compiled. Make sure you have `python3-dev` installed.
#### PyFTtxx6 (Touch Controller)
```bash
cd external/PyFTtxx6/pyft5xx6
pip install -e .
cd ../../..
```
#### PyBMA400 (Accelerometer)
```bash
cd external/PyBMA400
pip install -e .
cd ../..
```
#### PyPCF8523 (RTC)
```bash
cd external/PyPCF8523
pip install -e .
cd ../..
```
#### pi_ina219 (Power Monitor)
```bash
cd external/pi_ina219
pip install .
cd ../..
```
### 2. Install DReader HAL
```bash
# Install in development mode
pip install -e .
# Or install for Raspberry Pi with GPIO support
pip install -e .[rpi]
```
### 3. Verify Installation
```bash
# Run tests
pytest tests/
# Try example (virtual display, no hardware)
python examples/simple_display.py
```
## Troubleshooting
### IT8951 Build Errors
If you get Cython build errors:
```bash
# Install build dependencies
sudo apt-get install python3-dev gcc
# Try installing with verbose output
pip install -v ./external/IT8951/[rpi]
```
### I2C Device Not Found
```bash
# Check I2C devices
i2cdetect -y 1
# Add user to i2c group
sudo usermod -a -G i2c $USER
# Log out and back in
```
### Permission Denied
```bash
# Add user to necessary groups
sudo usermod -a -G spi,gpio,i2c $USER
# Reboot
sudo reboot
```
### Import Errors
If you get import errors, make sure all external drivers are installed:
```bash
# Check installations
pip list | grep -E "(IT8951|pyft5xx6|pybma400|pypcf8523|ina219)"
```
## Development Setup
For development with testing and linting tools:
```bash
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests with coverage
pytest --cov=dreader_hal tests/
# Format code
black src/ tests/ examples/
# Type checking
mypy src/
```
## Testing Without Hardware
To test the HAL without actual hardware:
```python
from dreader_hal import EReaderDisplayHAL
# Create HAL with virtual components
hal = EReaderDisplayHAL(
virtual_display=True, # Tkinter window
enable_orientation=False, # No accelerometer
enable_rtc=False, # No RTC
enable_power_monitor=False, # No INA219
)
```
This will use a Tkinter window for the display and won't try to access I2C devices.
## Quick Install Script
For convenience, here's a script to install everything:
```bash
#!/bin/bash
# install_all.sh
set -e
echo "Installing external drivers..."
# IT8951
cd external/IT8951
pip install ./[rpi]
cd ../..
# PyFTtxx6
cd external/PyFTtxx6/pyft5xx6
pip install -e .
cd ../../..
# PyBMA400
cd external/PyBMA400
pip install -e .
cd ../..
# PyPCF8523
cd external/PyPCF8523
pip install -e .
cd ../..
# pi_ina219
cd external/pi_ina219
pip install .
cd ../..
echo "Installing dreader-hal..."
pip install -e .[rpi]
echo "Installation complete!"
echo "Run 'pytest tests/' to verify."
```
Save this as `install_all.sh`, make it executable (`chmod +x install_all.sh`), and run it.