-
Notifications
You must be signed in to change notification settings - Fork 79
Major rewrite of the Frameo installation instructions #593
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -72,94 +72,162 @@ curl "http://192.168.0.136:53287/brightness?value=0.5" | |||||
| ``` | ||||||
|
|
||||||
| ### Frameo | ||||||
| ImmichFrame can be run on inexpensive Frameo digital photo frames with some additional effort. You can typically find these for ~$40 USD. These devices are low powered and run a very old Android version, so they cannot run the full WebView version of the app (however most of the main features are still supported except SplitView). We have found a method to update the WebView, but it is not without risks, see Frameo Webview Update below. | ||||||
| If you have not already, you will need to install ADB on your PC ([ADB instructions][ADB-link]). | ||||||
| ADB is often enabled on these devices by default, if it is not go to Frameo Settings-About-Enable Beta Program. Toggle ADB Access On-Off-On. Use the ADB commands below to sideload [ImmichFrame APK][github-android-releases], configure it to your liking, then disable the Frameo app to to set ImmichFrame as default Home app: | ||||||
| - Sideload ImmichFrame: | ||||||
| ImmichFrame can be run on inexpensive Frameo digital photo frames with some additional effort. You can typically find these for ~$40 USD. | ||||||
|
|
||||||
| Frameo digital photo frames are low powered and run a very old Android version, so they cannot run the full WebView version of the app (however most of the main features are still supported except SplitView). | ||||||
|
|
||||||
| > [!NOTE] | ||||||
| > We have found a method to update the WebView, but it is not without risks, see Frameo Webview Update below. | ||||||
| > | ||||||
| > Webview provieds the following features that are not available without it: | ||||||
| > - SplitView | ||||||
| > - Some image formats (HEIC) | ||||||
| > - Video playback (experimenta) | ||||||
| > - Better text rendering | ||||||
| > - Show Tag, desc, and album info from Immich. | ||||||
| > - Configurable layout, (size, background and overlay colors, and blur effects, etc). | ||||||
|
|
||||||
| 1. You will need to install ADB on your PC ([ADB instructions][ADB-link]). | ||||||
|
|
||||||
| 2. Enable ADB on the Frameo device. ADB is often enabled on these devices by default, if it is not go to Frameo Settings-About-Enable Beta Program. Toggle ADB Access On-Off-On. | ||||||
|
|
||||||
| 3. Connect via USB. Next to the power port on the Frameo device there is a USB port, connect this to your PC with a USB cable. | ||||||
|
|
||||||
| 4. Verify connection with `adb devices` command, you should see your device listed. If not, try unplugging and re-plugging the usb cable, or restarting the device while connected via usb. | ||||||
|
|
||||||
| 5. Download the latest ImmichFrame APK from the [GitHub Releases][github-android-releases] page to your PC. | ||||||
|
|
||||||
| For linux or mac you can run the following command to download the latest release directly to your current directory: | ||||||
|
|
||||||
| ```bash | ||||||
| curl -L -o ImmichFrame.apk $(curl -s https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest | grep "browser_download_url.*apk" | cut -d : -f 2,3 | tr -d \") | ||||||
| ``` | ||||||
|
|
||||||
| For windows you can run the following command in powershell to download the latest release directly to your current directory: | ||||||
| ```powershell | ||||||
| Invoke-WebRequest -Uri (Invoke-RestMethod -Uri https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest).assets | Where-Object { $_.name -like "*.apk" } | Select-Object -First 1 -ExpandProperty browser_download_url | Invoke-WebRequest -OutFile ImmichFrame.apk | ||||||
| ``` | ||||||
|
Comment on lines
+108
to
+109
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: cat -n docs/docs/getting-started/apps.md | sed -n '105,115p'Repository: immichFrame/ImmichFrame Length of output: 688 🏁 Script executed: # Test the PowerShell command syntax
pwsh -NoProfile -Command '
# Original command from the review
$originalCmd = "Invoke-WebRequest -Uri (Invoke-RestMethod -Uri https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest).assets | Where-Object { `$_.name -like `"*.apk`" } | Select-Object -First 1 -ExpandProperty browser_download_url | Invoke-WebRequest -OutFile ImmichFrame.apk"
# Proposed fix
$fixedCmd = "Invoke-WebRequest -Uri ((Invoke-RestMethod -Uri https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest).assets | Where-Object { `$_.name -like `"*.apk`" } | Select-Object -First 1 -ExpandProperty browser_download_url) -OutFile ImmichFrame.apk"
Write-Host "Testing original command syntax..."
try {
[scriptblock]::Create($originalCmd) | Out-Null
Write-Host "Original command parses OK"
} catch {
Write-Host "Original command has syntax error: $_"
}
Write-Host "Testing fixed command syntax..."
try {
[scriptblock]::Create($fixedCmd) | Out-Null
Write-Host "Fixed command parses OK"
} catch {
Write-Host "Fixed command has syntax error: $_"
}
'Repository: immichFrame/ImmichFrame Length of output: 184 🏁 Script executed: pwsh -NoProfile -Command '
# Test original command logic - will it fail at runtime?
Write-Host "Testing original command execution logic..."
try {
# Simulate the command without actually hitting the API
$assets = @(
[PSCustomObject]@{name="ImmichFrame.apk"; browser_download_url="https://example.com/apk"},
[PSCustomObject]@{name="other.zip"; browser_download_url="https://example.com/zip"}
)
# This is what the original command tries to do:
Write-Host "Attempting: Invoke-WebRequest -Uri `$assets | Where-Object..."
$result = $assets | Where-Object { $_.name -like "*.apk" }
Write-Host "After pipeline: $($result | Get-Member -MemberType NoteProperty | Select-Object -ExpandProperty Name)"
} catch {
Write-Host "Error: $_"
}
Write-Host ""
Write-Host "The issue: the original command passes .assets array to -Uri instead of extracting the URL first"
Write-Host "The .assets array object cannot be converted to a valid URI"
'Repository: immichFrame/ImmichFrame Length of output: 371 Fix the PowerShell command to extract the download URL before passing it to Invoke-WebRequest. The command has a logic error: it passes the 🔧 Corrected PowerShell commandInvoke-WebRequest -Uri ((Invoke-RestMethod -Uri https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest).assets | Where-Object { $_.name -like "*.apk" } | Select-Object -First 1 -ExpandProperty browser_download_url) -OutFile ImmichFrame.apkOr more readably: $url = (Invoke-RestMethod -Uri https://api.github.com/repos/immichFrame/ImmichFrame_Android/releases/latest).assets | Where-Object { $_.name -like "*.apk" } | Select-Object -First 1 -ExpandProperty browser_download_url
Invoke-WebRequest -Uri $url -OutFile ImmichFrame.apk🤖 Prompt for AI Agents |
||||||
|
|
||||||
| 6. Sideload ImmichFrame: | ||||||
| ```bash | ||||||
| adb install /path/to/ImmichFrame_vXX.apk | ||||||
| ``` | ||||||
|
|
||||||
| **Update/reinstall existing ImmichFrame:** | ||||||
| ```bash | ||||||
| adb install -r /path/to/ImmichFrame_vXX.apk | ||||||
| ``` | ||||||
| 7. Start ImmichFrame: | ||||||
| ```bash | ||||||
| adb shell am start com.immichframe.immichframe/.MainActivity | ||||||
| ``` | ||||||
| 8. Configure and disable WebView: | ||||||
| 1. Swipe down to enter ImmichFrame Settings | ||||||
| 2. Configure URL and Authorization Secret (optional) | ||||||
| 3. Disable WebView | ||||||
|
|
||||||
| 9. Set as default HOME app: | ||||||
|
|
||||||
| On first reboot after install you will be asked to select default Launcher, select `ImmichFrame` and select "Always" | ||||||
|
Comment on lines
+129
to
+131
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix inconsistent list indentation for step 9. Line 129 is indented differently from the other numbered steps, which can break markdown list rendering. Align the indentation to match the surrounding steps. 🧰 Tools🪛 markdownlint-cli2 (0.20.0)[warning] 129-129: Inconsistent indentation for list items at the same level (MD005, list-indent) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
|  | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add alt text to image for accessibility. The image is missing alt text, which is important for screen readers and when images fail to load. ♿ Proposed fix to add alt text-
+📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.20.0)[warning] 133-133: Images should have alternate text (alt text) (MD045, no-alt-text) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| 10. Then disable the Frameo app to set ImmichFrame as only Home app: | ||||||
|
|
||||||
| ```bash | ||||||
| adb shell su | ||||||
| pm disable net.frameo.frame | ||||||
| exit | ||||||
| adb reboot | ||||||
| ``` | ||||||
| If this doesn't stick on reboot, repeat the commands but power cycle after exit command | ||||||
|
|
||||||
| > [!NOTE] | ||||||
| > This is not possible with latest app version (< 1.29) so uninstalling updates (to 1.24) is required to get the overwriting of default home app to work. If you have already updated the Frameo app, you can uninstall updates by going to Android Settings-Apps-Frameo-Uninstall Updates. | ||||||
|
|
||||||
|
|
||||||
|
|
||||||
| #### Some other useful ADB commands: | ||||||
|
|
||||||
| **Reboot:** | ||||||
|
|
||||||
| ```bash | ||||||
| adb reboot | ||||||
| ``` | ||||||
|
|
||||||
| > [!NOTE] | ||||||
| > You can also reboot or shutdown by holding down power button | ||||||
|
|
||||||
| **Access Android Settings:** | ||||||
|
|
||||||
| ```bash | ||||||
| adb shell am start -a android.settings.SETTINGS | ||||||
| ``` | ||||||
|
|
||||||
| #### Re-enable Frameo | ||||||
|
|
||||||
| 1. Enable Frameo again with ADB command: | ||||||
| ```bash | ||||||
| adb install /path/to/ImmichFrame_vXX.apk | ||||||
| adb shell su | ||||||
| pm enable net.frameo.frame | ||||||
| exit | ||||||
| ``` | ||||||
| - Update existing ImmichFrame: | ||||||
| ```bash | ||||||
| adb install -r /path/to/ImmichFrame_vXX.apk | ||||||
|
|
||||||
| 2. Start Frameo app: | ||||||
| ```bash | ||||||
| adb shell am start net.frameo.frame | ||||||
| ``` | ||||||
| - Start ImmichFrame: | ||||||
| ```bash | ||||||
| adb shell am start com.immichframe.immichframe/.MainActivity | ||||||
|
|
||||||
| 3. Uninstall ImmichFrame: | ||||||
| ``` | ||||||
| adb uninstall com.immichframe.immichframe | ||||||
| ``` | ||||||
coderabbitai[bot] marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
| - Swipe down to enter ImmichFrame Settings | ||||||
| - Configure URL and Authorization Secret (optional) | ||||||
| - Disable WebView | ||||||
| - Set as default HOME app | ||||||
| - On first reboot after install you will be asked to select default Launcher, select ImmichFrame | ||||||
| - Alternatively you can disable Frameo | ||||||
| ```bash | ||||||
| adb shell su | ||||||
| pm disable net.frameo.frame | ||||||
| exit | ||||||
| ``` | ||||||
| If this doesn't stick on reboot, repeat the commands but power cycle after exit command | ||||||
| - Some other useful ADB commands: | ||||||
| - Reboot: | ||||||
| ```bash | ||||||
| adb reboot | ||||||
| ``` | ||||||
| - You can also reboot or shutdown by holding down power button | ||||||
| - Access Android Settings: | ||||||
| ```bash | ||||||
| adb shell am start -a android.settings.SETTINGS | ||||||
| ``` | ||||||
| - Re-enable Frameo: repeat disable commands above but replace "disable" with "enable" | ||||||
| - Start Frameo app: | ||||||
| ```bash | ||||||
| adb shell am start net.frameo.frame | ||||||
| ``` | ||||||
| - Uninstall ImmichFrame: | ||||||
| ``` | ||||||
| adb uninstall com.immichframe.immichframe | ||||||
| ``` | ||||||
|
|
||||||
| ### Frameo WebView Update | ||||||
| Follow instructions below to update WebView to 106. This has been tested and working on Android 6.01 10.1" Frameo devices: | ||||||
| - Download WebView 106 to PC: | ||||||
| [Lineage OS WebView 106-0-5249-126-12][webview-update] | ||||||
| - Push new apk to sdcard | ||||||
| ```shell | ||||||
| adb push /path/to/your/new/webview.apk /sdcard/ | ||||||
| ``` | ||||||
| - Enter shell and switch to the root user | ||||||
| ```shell | ||||||
| adb shell | ||||||
| ``` | ||||||
| then inside the shell | ||||||
| ```shell | ||||||
| su | ||||||
| ``` | ||||||
| - Backup original WebView APK | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && cp /system/app/webview/webview.apk /system/app/webview/webview.apk.bak | ||||||
| ``` | ||||||
| - Delete the oat folder recursively | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && rm -rf /system/app/webview/oat | ||||||
| ``` | ||||||
| - Copy new WebView to system | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && cp /sdcard/webview.apk /system/app/webview/webview.apk | ||||||
| ``` | ||||||
| - exit root | ||||||
| ```shell | ||||||
| exit | ||||||
| ``` | ||||||
| - Reboot device | ||||||
| ```shell | ||||||
| adb reboot | ||||||
| ``` | ||||||
| Follow instructions below to update WebView to 106. | ||||||
|
|
||||||
| This has been tested and working on Android 6.01 10.1" Frameo devices. | ||||||
|
|
||||||
| 1. Download WebView 106 to PC: | ||||||
|
|
||||||
| [Lineage OS WebView 106-0-5249-126-12 (arm64-v8a + arm-v7a) (Android 6.0+)][webview-update] | ||||||
|
|
||||||
| 2. Push new apk to sdcard | ||||||
| > [!NOTE] | ||||||
| > Android does not have auto complete so you will save time if the new file is /sdcard/webview.apk, so you can just run `adb push /path/to/webview.apk /sdcard/webview.apk` and it will be named webview.apk on the device. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Use hyphen for compound adjective. The compound adjective "auto complete" should be hyphenated as "auto-complete". 📝 Proposed fix-> > Android does not have auto complete so you will save time if the new file is /sdcard/webview.apk, so you can just run `adb push /path/to/webview.apk /sdcard/webview.apk` and it will be named webview.apk on the device.
+> > Android does not have auto-complete so you will save time if the new file is /sdcard/webview.apk, so you can just run `adb push /path/to/webview.apk /sdcard/webview.apk` and it will be named webview.apk on the device.📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[grammar] ~197-~197: Use a hyphen to join words. (QB_NEW_EN_HYPHEN) 🤖 Prompt for AI Agents |
||||||
| ```shell | ||||||
| adb push /path/to/your/new/webview.apk /sdcard/webview.apk | ||||||
| ``` | ||||||
| 3. Enter shell and switch to the root user | ||||||
| ```shell | ||||||
| adb shell su | ||||||
| ``` | ||||||
| 4. Backup original WebView APK | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && cp /system/app/webview/webview.apk /system/app/webview/webview.apk.bak | ||||||
| ``` | ||||||
| 5. Delete the oat folder recursively | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && rm -rf /system/app/webview/oat | ||||||
| ``` | ||||||
| 6. Copy new WebView to system | ||||||
| ```shell | ||||||
| mount -o rw,remount /system && cp /sdcard/webview.apk /system/app/webview/webview.apk | ||||||
| ``` | ||||||
| 7. Reboot device | ||||||
| ```shell | ||||||
| adb reboot | ||||||
| ``` | ||||||
| After reboot, you should see a "installing new app" notification, and then you can verify the new WebView version by going to Android `Settings-Apps`, top right corner triple dot menu `show system`, Android System WebView. | ||||||
|
|
||||||
|  | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add alt text to image for accessibility. The image is missing alt text, which is important for screen readers and when images fail to load. ♿ Proposed fix to add alt text-
+🧰 Tools🪛 markdownlint-cli2 (0.20.0)[warning] 223-223: Images should have alternate text (alt text) (MD045, no-alt-text) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| > [!NOTE] | ||||||
| > Depending on the device or Android version, the location to the webview apk may be different for you. You can locate it with: | ||||||
| > ```shell | ||||||
| > adb shell pm path com.android.webview | ||||||
| > ``` | ||||||
|
Comment on lines
+227
to
+229
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove extra spaces after blockquote symbol. Line 227 has multiple spaces after the blockquote symbol ( 📝 Proposed fix > [!NOTE]
> Depending on the device or Android version, the location to the webview apk may be different for you. You can locate it with:
-> ```shell
+> ```shell
> adb shell pm path com.android.webview
> ```🧰 Tools🪛 markdownlint-cli2 (0.20.0)[warning] 227-227: Multiple spaces after blockquote symbol (MD027, no-multiple-space-blockquote) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| Depending on the device or Android version, the location to the webview apk may be different for you. You can locate it with | ||||||
| ```shell | ||||||
| adb shell pm path com.android.webview | ||||||
| ``` | ||||||
| #### Alternative WebView Method | ||||||
| If the above method does not work, or you receive permissions issue, try this [Alternative Method][alternate-webview-method] | ||||||
|
|
||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typos in the WebView feature list.
The note block contains several typographical errors:
📝 Proposed fix for typos
🧰 Tools
🪛 LanguageTool
[grammar] ~82-~82: Ensure spelling is correct
Context: ...ameo Webview Update below. > > Webview provieds the following features that are not ava...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[style] ~88-~88: In American English, abbreviations like “etc.” require a period.
Context: ...d and overlay colors, and blur effects, etc). 1. You will need to install ADB o...
(ETC_PERIOD)
🤖 Prompt for AI Agents