Giter Club home page Giter Club logo

eo1's Introduction

EO1 and EO2 Replacement APK

Build Status Quality Gate Status

This repository is a rewrite of spalt/EO1. The goal is to ideally use a self-hosted immich.app instance as a backend. This will allow full self-custody of the system.

photo of eo1 custom app development photo of eo1 running custom app

This concept guarantees that you control all aspects of the images displayed on your EO1 and/or EO2 and they will never go offline or stop displaying art ever again, because someone else decided to do so!

Concept

On your smart device, you will run the immich app for your platform and device. It supports phones and tablets running iOS or Android. The app connects to the cloud hosting an instance of the immich server. You need to host it yourself or have someone host it for you!

  • A simple single-user configuration runs the same user credentials on the picture frame as well as on the smart device.
  • In a multi-user configuration, everyone can upload pictures to one shared album or several shared albums which is accessible from the account that is used on the frames.
  • The client app on the frames will select a random picture from the pool of all available pictures in shared or non-shared albums.
  • A new picutre is chosen every interval.
  • A best effort is made that once every picture had been displayed once, the cycle starts anew.

Getting started

The following documentation assumes, that you have set up Immich already.

Requirements

  • You need a way to connect a keyboard and mouse to your EO1 frame. You can get one of these USB OTG Adapters and connect a USB keyboard with hub built-in to it, then a USB mouse to the keyboard
    • Alternatively, you can get an OTG Hub and connect a mouse and keyboard to it directly
  • Immich Account Host
  • Immich Account Login (Username/Password)
  • (optionally) a web server hosting the APK for download onto the frames

Caveats

EO1 has only one data port thus OTG and adb (via USB) can not be used at the same time. Unfortunatly the Android OS version 4.4.2 running on EO1 does not support wireless adb connection. That is the reason why the APK has to be sideloaded via the built-in browser.

Additionally the old Android 4.4.2 version installed on EO1 supports a limited set of TLS encryption next to a swath of outdated SSL stuff for accessing resources via the web. That means that the immich instance hosting your albums needs to let their guard down at least a litte. Amongst other things, I had to disable PFS as well as enable TLSv1.2 in addition to modern TLSv1.3. If the app complains about SSL connection errors, it is likely that the immich host and the Android OS don't share at least one compatible cipher and protocol.

Setup for EO1

  • Upload some pictures to your Immich account
  • Connect the mouse & keyboard to your EO1 via the mentioned OTG method
  • Connect the EO1 to the power adapter and let it boot
  • When your EO1 finishes the boot animation and it hangs on the "Getting Art" dialog, hit [WINDOWS + B] on the keyboard to open a web browser
  • You need to tell your EO1 to allow side-loading.
    1. Swipe down on the top right and go to Settings > Security
    2. Make sure "Unknown Sources" is checked
  • Go back to the browser and go to this URL: http://gitea.codingmerc.com/michael/EO1/releases/download/v1.1.0-rc2/app-release.apk
    • You can build the app from this repository and host it yourself if you want to not use a precompiled APK
  • When it finished downloading, install the file by pulling down the notification bar on the top left and clicking it, then agreeing to the prompts
  • Restart/power cycle your EO1 by unplugging and plugging only the power cable
    • At this point, the keyboard and mouse are still connected via OTG
  • Because this APK is designated as a "Home screen replacement", when EO1 boots, it will ask if you want to load the Electric Object app or the EO1 app. Select EO1 and choose "Always".
  • The first time the EO1 is run you will need to specify the information listed above. Click OK to save and continue. To get back to the configuration screen later, press C on your connected keyboard
    • Username: this is the same email address you would use to log in on the web-app or the native apps on iOS or Android
      • Depending in how you set up your immich installation this is your own user or a shared user account dedicated for use with the frames
    • Password: same as above
      • Keep in mind that this password is stored in clear-text on the frame. Everyone with access to your device can recover the password!
    • Server / Host: Insert the same server URL you use to to log in on the web-app or the native apps on iOS or Android
      • If you connect to immich on your browser by using http://immich.local, that is what you want to use in the configuration window as well
      • If you run immich on a different port than 80, you need to include that in the server string like http://immich.local:8080
  • You can now unplug your mouse and keyboard and hang your EO1 back on the wall!

This process should be fairly similar on an EO2.

Configuration

It seems like EO2 allows for adb access. If you push a configuration.json to the publicly writeable download directory after installing the APK, you can load it in the configuration UI after the app starts. If you configure multiple EO2 you can download a configuration.json from the EO2 after successfully configuring the first one. This file can be downloaded, optionally modified, and pushed to the next EO2. This might only work for EO2 frames as I'm unaware of enabling adb on EO1. (I do not have an EO2 available to test this, please provide feedback!)

Further Reading

  1. EO1 Hardware specifications

Contribution

  1. You can provide feedback by opening Issues and describing an idea or problem.
  2. You can donate in Dollar via PayPal or in Bitcoin.
  3. If you happen to have a working but no longer needed EO1/EO2 picture frame, please reach out via email!

eo1's People

Contributors

aphex3k avatar chrisdrackett avatar hellbox avatar spalt avatar

Watchers

 avatar

Forkers

tk421storm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.