cell-wall icon indicating copy to clipboard operation
cell-wall copied to clipboard

A multi-device display for showing interactive data, such as photos, weather information, calendar appointments, and more.

CellWall

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.

Putting the hardware together

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.

Parts list

Wood plank (the "Wall")

Mounting and connecting the phones (the "Cell"s)

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!

Using the software

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Node.js 16 or greater
  • pnpm
  • Android Studio 4.1 or greater
  • Android Debug Bridge

Installing dependencies

Install Node dependencies for the server:

pnpm install

Install 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 build

Development

Test locally in development environment by spinning up two servers: client & server.

pnpm run dev --filter server
pnpm run dev --filter client

Deployment

The 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 run build -r
pnpm start -w

A production build is available on the pi-deploy branch. It can be started by running:

pnpm install --frozen-lockfile --prod
node javascript/server/build/index.js

Environment variables

Some 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.

Built with