A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.
CellWall is my project to repurpose a batch of old hand-me-down cell phones into a useful display in my apartment. It uses ADB to let each phone connect to a server and receive data about what to show.
The hardware boils down to a bunch of cell phones stuck onto a plank of wood, with USB cables connecting them to a server. A detailed run-through is coming soon.
- Plywood handy panel
- White acrylic paint
- Paint brush
- Sandpaper
- Tools to mount the plank onto your wall, such as:
- Command Strips for an apartment
- Wood screws for a house.
- Old cell phones and/or tablets running Android
- Raspberry Pi or another computer to use as the server
- Velcro strips
- USB cables
- Wire clips
- USB hub
Note that most of these links are affiliate links for Amazon. As an Amazon Associate I earn from qualifying purchases. Using these links helps out the project!
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Node.js 16 or greater
- pnpm
- Android Studio 4.1 or greater
- Android Debug Bridge
Install Node dependencies for the server:
pnpm installInstall Gradle dependencies for the client by opening the ./android folder as
an Android Studio project and syncing Gradle.
Alternatively, from the command line:
cd ./android
gradlew buildTest locally in development environment by spinning up two servers: client & server.
pnpm --filter server run dev
pnpm --filter client run devThe server communicates with phones over ADB. ADB should be installed and the phones should be in debug mode. Check that all phones appear when running adb devices.
Run the server by compiling the TypeScript code and launching it with node:
pnpm -r run build
pnpm -w startA production build is available on the pi-deploy branch. It can be started by running:
pnpm install --frozen-lockfile --prod
pnpm -w startSome paths and API keys are set via environment variables. The project uses dotenv, so an .env file will automatically be loaded by the server.
See env.ts for a list of environment variables.
- SveleteKit - Client code
- Fastify - Web server
- ADB - Communication from server to phones
- Android Architecture Components - Used for MVVM architecture on client

