The Polaroid SX-70 is an engineering marvel. But it's also 50 years old. While the optics are still stunning, the electronics are archaic. My latest project, the SX-70R Controller, bridges this gap using a modern PCB mod and a custom Android app.
The Challenge
Traditional SX-70 cameras have zero manual control. No shutter speed selection, no aperture priority. The auto-exposure is calibrated for film that hasn't existed since 2005.
The OpenSX70 project (and later, the SX-70R PCB from *The Instant Camera Guy*) replaces the old flex PCB with an Atmega-based board that exposes a UART/BLE interface. This was my entry point.
Building the App
I wanted an experience that felt native to the camera—premium, tactile, and reliable.
1. Architecture: Jetpack Compose
I built the Android app using **Jetpack Compose** for a modern, declarative UI. The design language uses a "Dark Mode" aesthetic with silver accents to match the chrome body of the Alpha 1 model.
2. The BLE Interface
The core of the app is the Bluetooth Low Energy (BLE) service. The camera broadcasts a custom service UUID. The app scans for this, connects, and subscribes to notifications.
class BleService : Service() {
// Scanning for the SX-70R UUID
val SX70R_SERVICE_UUID = UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e")
fun connectToDevice(device: BluetoothDevice) {
bluetoothGatt = device.connectGatt(this, false, gattCallback)
}
}
Handling BLE on Android is notoriously tricky. I implemented a robust Auto-Reconnect logic so that if the camera goes to sleep (to save its 6V battery), the app picks it up immediately upon wake-up.
Features
- Manual Shutter Speed: Select from 1/125s down to BULB mode.
- ISO Configuration: Re-calibrate the light meter for 600 or I-Type film.
- Light Meter: Real-time EV values displayed on the phone screen.
"An interface that feels responsive and alive encourages interaction. Micro-animations are highly effective."
What's Next?
I'm currently working on a "Journal" feature that uses the phone's GPS to log the location of every shot taken, syncing it with a photo of the developed print later.