A monorepo of automation scripts for the CrossPoint Reader custom firmware on the xTeInk X4 e-ink reader.
# Create a virtual environment
python -m venv .venv
# If you use direnv, run `direnv allow` now — the .envrc will activate it automatically.
# Otherwise activate manually:
source .venv/bin/activate
# Install the shared library and dependencies
pip install -e ".[dev,epub]"
# Test connectivity to your device
python -m crosspoint --host 192.168.68.51 status
# Manage upload queue
python -m crosspoint queue # list pending uploads
python -m crosspoint queue --process # upload everything queued.
├── libs/
│ └── crosspoint/ # Shared Python client for the CrossPoint HTTP + WebSocket API
├── projects/ # Individual automation projects (one per folder)
│ └── (your projects here)
├── docs/
│ └── api.md # Cached copy of the webserver endpoint documentation
└── pyproject.toml # Workspace-level configuration
The CrossPoint exposes an HTTP server on port 80 and a WebSocket on port 81. See docs/api.md for the full endpoint documentation.
Key endpoints:
GET /api/status— Device status (version, IP, RSSI, uptime, free heap)GET /api/files?path=/— List files and folders on the SD cardPOST /upload— Upload a file via multipart formPOST /mkdir— Create a folderPOST /delete— Delete a file or folderWebSocket :81— Fast binary upload protocol
- Create a new folder under
projects/ - Add a
README.mddescribing what it does - Add a
pyproject.tomlorrequirements.txtif it needs extra deps beyond the workspace - Import from
crosspointto talk to the device:
from crosspoint import CrossPointClient
client = CrossPointClient("192.168.68.51")
client.upload_file("mybook.epub", "/Books")If your network does not support mDNS (crosspoint.local), use the IP shown on the device screen. The current home IP is 192.168.68.51.