I have here a test version for this “doesn’t work on Android, works on CE” issue.
If the bl301 got injected it will be checked now every boot if something changed in config.ini.
If yes, the blob is updated and the device reboot once to refresh the status.
I don’t have a “generic” device here and can’t finish testing as the Khadas devices do have a extra external IR decoder MCU for handling suspend/power off. I will continue tomorrow with another device.
Right now these parameters are supported and should work after a power off from Android too:
remotewakeup
decode_type
remotewakeupmask
usbpower
wol
So setup your config.ini for your wake up config, reboot the device once and then enter Android and power off the device then. Then it should be possible to wake up the device by your IR wake up code.
CoreELEC:/var/media/sda1-usb-USB_DISK_2.0_1I9/bootloader # sh update.sh
Updating device tree from /usr/share/bootloader/device_trees/g12a_s905x2_4g_1gbit.dtb...
Updating device_trees folder...
Updating aml_autoscript...
Updating cfgload...
update.sh: line 159: /usr/sbin/check-bl301: not found
remote-toggle: /meson-ir/ enabled in device tree...
checkbl301 for the latest Nightly build, so I’ve updated the update.sh script and ran it again. It didn’t run the injection automatically so I just done that through the CoreELEC. Testing now.
Tested it… But under Android, I power it off… Cannot get it to wake up, no Power LED comes on. It’s probably something wrong I’ve done, let me know what that might be. Thanks
Putting it to Suspend mode under CoreELEC. Waking it up (LED power indicator/status light comes on) doesn’t turn TV on either, and still required to manually turning TV on, and still shows no HDMI signal from the unit.
Putting the unit to sleep under Android, I can wake it up. I can’t remember if I’ve tested waking it up from standby with the official bl301 Injection release (I had, and that worked)… Will revert changes and test again the experimental package.
Before CoreELEC…, when unit suspended under Android, the LED power indicator/status light always remained on, unlike behaviour experienced with two other Beelink product types. Reported it over year ago, and few occasions in between, and nothing was ever done about it. However under CoreELEC, powering it off via ’ Power off system ’ the unit shuts down and also the light goes out too! Yet I can still wake it up and it turns TV on. I really like this because this unit has a bright light and sits just at the foot of my bed and shining ever so brightly like the north star at nights.
I don’t follow boot2k3. This we testing is not the official package release, but an experimental one and requires different procedure for different package.
And I am talking only about a IR wake up code defined in config.ini.
There is nothing about power on the TV - this is a complete different issue (libCEC & CEC) and have nothing to do here in this topic. I have even no idea how Android is handling this.
The definedIR wake up code will now be also injected to the bl301 blob and should now work after powering down/suspended Android. It will boot to CE after wake up.
After update of CE with this tar file post the log get by this command: cat /storage/init-previous.log | paste
@doncachopo As I know I didn’t change anything what can cause you this issue - maybe.
Please be sure you use a correct installed SD card/USB flash drive for CE.
Perfect. I didn’t manage to test the previous version but this one works. Shutdown with the remote within Android, then powered back on with the remote into CE.
I just trying to prepare… I dont have x96 yet, but in case, if I would use that tool, I would like to know, if I need to use -s and how (I am using SD card for /flash and USB flash for /storage usually. I would like to have X96 booted entireally from USB, but if it wont work, I expect same setup SD+USB as always.)
I mean, how its “root” related to what updates, and what “root” is meant as default, and what roots are need to adjust by -s parameter
The changes are now in the next nightly. Now the injected bl301 will be working also for Android wake up.
bl301 got rebased on original branch 'amlogic-dev_9.2.1811_21-dev'.
Since now the inject_bl301 tool is started on every boot by a service entry like the remote toggle script.
The tool checks the current injected bl301 blob and read also now the wake up keys from config.ini and “implement” them directly to the binary blob before injection.
Then the tool calculates the checksum and compare if an update is needed at all.
The config.ini keys values are now like hard coded to the bl301 - but still configurable by users:
1. get correct bl301 blob for device
2. read config.ini and implement the values in the blob binary
If the checksum is changed (maybe because a user edited a config.ini key) the tool injects the blob and reboot once to make the changes active.
It's now possible to use the wake up settings from config.ini for Android or from DC power supply off too as they "implementation" of the config.ini keys is like hard coding the values directly to the source.
Current available user config.ini keys for bl301:
https://github.com/CoreELEC/bl301/blob/coreelec-bl301/arch/arm/cpu/armv8/g12b/firmware/scp_task/coreelec_config.c
The user is also now able to change the CEC OSD name shown on TV by using the 'cec_osd_name' key in config.ini.
This will enable a minimum of required blobs, but still allows full customization by users config.ini without the need of change the bl301 source.
Only Hardkernel Odroid devices still require the Linux driver tool 'CONFIG_BL301_MANAGER' to setup the bl301 when booting.
The injected bl301 blobs aren’t requiring this tool anymore.
Example:
CoreELEC ir_pwr_key = eb14ff00
CoreELEC usr_ir_proto = 00000000
CoreELEC ir_pwr_key_mask = ffffffff
CoreELEC system_power = 00000001
CoreELEC wake_on_lan = 00000001
CoreELEC cec_osd_name = NEO T5
CoreELEC-Amlogic-ng.arm-9.2-nightly_20200121-Generic causes issues with GT1 Mini 4+64GB, even attempting to use for the first time setup on a cleaned Micro-SD-Card. Stuck in a re-boot loop, long before CoreELEC logo ever appears, before preparation phase.