updated content

This commit is contained in:
Jan Wachsmuth 2024-01-05 01:33:24 +01:00 committed by GitHub
parent 82a3ad546d
commit 94dff0d2ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1837 additions and 21 deletions

View file

@ -100,7 +100,7 @@ The URLs include a "random" ID that might be mapped to the product ID and a subd
| image-uboot | - | boot loader uBoot | | image-uboot | - | boot loader uBoot |
| image-backup | - | backup image | | image-backup | - | backup image |
I'm not sure if the **<sign>** tag is used. I've modified the URLs (different FQDN and path) and got no error. Only the following files are downloaded during an upgrade (verified with Up2Stream Amp v2.0): I'm not sure if the **<sign>** tag is used. I've modified the URLs (different FQDN and path) and got no error. Only the following files are downloaded during an upgrade and in that order (verified with Up2Stream Amp v2.0 and Wireshark):
| URL | Description | | URL | Description |
| --------------- | ------------- | | --------------- | ------------- |
| http://silenceota.linkplay.com/wifi_audio_image/products.xml | List of all Linkplay products in XML format with infos and URL | | http://silenceota.linkplay.com/wifi_audio_image/products.xml | List of all Linkplay products in XML format with infos and URL |
@ -432,3 +432,31 @@ curl -s 'http://10.1.1.58/httpapi.asp?command=getStatusEx' | jq
"Release": "20200220", "Release": "20200220",
"branch": "stable/wiimu-4.2", "branch": "stable/wiimu-4.2",
``` ```
> **IMPORTANT:**
> I recommend to rename the ***products.xml*** file on your server after an up- or downgrade to something else and block or redirect any upgrade requests on the Internet. If a ***products.xml*** is found on that server in the proper directory (the default URL is pointing to http://silenceota.linkplay.com/wifi_audio_image) then an automatic upgrade may be triggered.
## Problem with Upgrade after downgrade
In v4.6 Arylic has added a command to play a notification URL from my home automation system while music is playing. The music is faded out before the notification message is played, so this is quite nice. After I had installed a permanent hook that even survives a reboot I wanted to upgrade afterwards. See [Install Persistant Hook](/persistant-hook.md) for details.
I don't know why, but an upgrade with cli commands always got stuck after the device has fetched the ***MVver_20220427*** file. The three files ***products.xml***, ***product.xml***, and ***MVver_new*** were downloaded properly and temporarily stored in ***/tmp*** directory on the device. For some reason the device believes that an upgrade is not required, so the upgrade process is stopped.
I thought that a variable in NVRAM might block the upgrade and had a closer look to them with ***ralink_init show 2860***, but could not find an answer. That's what I have tried:
```
ralink_init show 2860
nvram_set 2860 FirmwareServerVersion 4.2.8020
nvram_set 2860 Ota_Fw_New 4.2.8020
nvram_set 2860 part_ver_kernel 8020
reboot
```
I also tried
```
nvram_set 2860 FirmwareServerVersion 0
nvram_set 2860 Ota_Fw_New 0
nvram_set 2860 McuServerVersion 0
nvram_set 2860 McuSaveVersion 0
nvram_set 2860 Ota_Mcu_New 0
```
I also played around with the FQDNs (the DNS hostname or IP address) and the URLs that are used in ***products.xml***, ***product.xml***, and ***MVver*** without any luck. I tried IP addresses as well as FQDNs. I even pointed to the real update servers on the Internet, but that failed with the same result as well. So it looks that the problem must be on the device itself.
There is a simple way to work around that problem: install the upgrade via 4Stream app from you mobile phone. It was working on my iPhone (4Stream app version 2.8.11908) and I upgraded from v4.2.8020 release date 2020/02/20 to v4.6.415145, release date 2022/04/27.

View file

@ -2,25 +2,36 @@
After I had downloaded some firmware files my web server became quite messy, so I've created a list of commands to download firmware for different products and versions. After I had downloaded some firmware files my web server became quite messy, so I've created a list of commands to download firmware for different products and versions.
/Library/WebServer/Documents/linkplay /Library/WebServer/Documents/linkplay
|-- products-original-2024-01-03.xml |-- products-original-2024-01-03.xml # downloaded products.xml file renamed by current date for future use
|-- products.xml |-- products.xml # crafted file that contains the products I own and the URLs are pointing to this local web server
|-- product.xmls-2024-01-03 |-- product.xmls-2024-01-03 # directory for product.xml files with date when the download was done
| |-- all-products.xml | |-- all-products.xml # combined xml files from all products for easier modification
| |-- product-XXXXX.xml | |-- product-XXXXX.xml # specific product.xlm files renamed with their product IDs
| |-- ... | |-- ...
|-- a31 |-- a31 # subdirectory with all images, binaries and other files for devices with Linkplay A31 module
| |-- RP0011_WB60 | |-- common # common directory for images and other files that are the same for many products
| | |-- 20200220 | | |-- 20200220 # subdirectory with images and other files named with release date of that version
| | | |-- a31rakoit_new_uImage_20200220 | | | |-- a31rakoit_new_uImage_20200220 # kernel image as an example
| | | +-- ... | | | +-- ...
| | |-- 20220427 | | |-- 20220427 # other (latest) version
| | | +-- ... | | | +-- ...
| | +-- sql | | +-- uboot_v632.img # image of uBoot loader (all versions use the same loader)
| +-- lib | +-- bin # binary applications from Open WRT archive
| +-- ZendFramework-HEAD | | +-- readelf
+-- public | |-- RP0011_WB60 # directory for MCU images and product.xml files for that specific product ID
|-- css | | |-- RP0011_WB60_S-0024-99617ee3-08182020.mcu.bin # MCU image (they have a version number included in their name)
|-- images | | |-- product-RP0011_WB60-20220427-original.xml # product.xml file (there might be several files with release date included in their names)
+-- scripts | | |-- product-RP0011_WB60-20220427.xml # modified product.xml file that points to files on this server
| +-- ...
+-- mp3 # notification messages in mp3 format
...
products.xml I've provided shell script that can be used to download products.xml, the specific product.xml files for the products in use and their images for the two important versions:
- 20200220 - version with security vulnerability to allow telnet to the device
- 20220427 - actual version for my Linkplay devices (today is 2024/01/05).
You may only want to download the files that are interesting for you. The shell script contains a lot of commands that should be skipped, but it is easier to start with and it contains the URLs for the OLDER versions of many products. Unfortunately only the latest products.xml and product.xml files are available on the Internet.
- http://silenceota.linkplay.com/wifi_audio_imageproducts.xml (entry link with list of products with URLs and more)
- http://ota.rakoit.com/release/RP0011_WB60_S/product.xml (example for one of the product IDs)
See shell script for more information [Shell script to download](/download-firmware.sh)

1774
download-firmware.sh Normal file

File diff suppressed because it is too large Load diff

View file

@ -124,6 +124,9 @@ The shutdown of "apcli0" does not work within the script, however it works a bit
So far, the device fetches the full version of busybook after each reboot, but stores that binary in ramfs. With ***df*** command you can verify the free space on each of the file systems. So far, the device fetches the full version of busybook after each reboot, but stores that binary in ramfs. With ***df*** command you can verify the free space on each of the file systems.
> **IMPORTANT:**
> The hook is NOT called, if the device got stuck during an upgrade, e.g. if you have a ***products.xml*** file with a product ID that is matching your product that triggers an upgrade, but got stuck for some reasons. Therefore I recommend to rename the ***products.xml*** file on your server to something else and block or redirect any upgrade requests on the Internet. See [Downgrade Firmware](/Downgrade.md) section at the end for details.
The good thing is, that this hook even suvives an upgrade that is done afterwards (tested with v4.6.415145, release date 2022/04/27.): The good thing is, that this hook even suvives an upgrade that is done afterwards (tested with v4.6.415145, release date 2022/04/27.):
``` ```
Mac-mini ~ % curl -s 'http://10.1.1.52/httpapi.asp?command=getStatusEx' | jq Mac-mini ~ % curl -s 'http://10.1.1.52/httpapi.asp?command=getStatusEx' | jq