asteroidos / meta-smartwatch Goto Github PK
View Code? Open in Web Editor NEWOpenEmbedded layer that provides support for various smartwatches.
OpenEmbedded layer that provides support for various smartwatches.
After successfully installing AsteroidOS on a bass LG G watch Urbane, and it running (basically - some rapid connect/disconnects w/ bluetooth only trouble) fine for weeks, the watch went into a kind of soft brick, where only the LG logo showed. I could still enter fastboot, however. I reflashed the install files and the watch worked again for about 1 week, then the same symptom happened again. I tried several times to reflash and it kept going to only the LG logo screen. I let it sit on the charger, thinking maybe it was below a critical battery level (even though it was never entirely depleted). I tried to reflash again, and again, this time it worked. Any ideas why the inconsistent behavior, and why the watch OS would just suddenly stop working?
While porting AsteroidOS to the Moto 360 2015 I kept track of the different issues. Here is one of them. These have been transferred over from my personal repository and are here in the hopes that it will help other porters solve similar issues.
[19 June 2020]
Bluetooth doesn't work yet....
Debugging brcm-patchram-plus
first reads a lot of successful writes, then gets stuck on the following:
writing
01 03 0c 00
writing
01 03 0c 00
writing
01 03 0c 00
writing
01 03 0c 00
writing
01 03 0c 00
writing
01 03 0c 00
writing
01 03 0c 00
I believe it to be likely that the current patches for the kernel are not correctly adjusted.
A notable thing is that the CONFIG_BT_MSM_SLEEP
is explicitly disabled in check-config
. While it needs to be enabled with the patches.
Due to issues with the MultiHAL, some sensors are made unavailable as per AsteroidOS/meta-dory-hybris@6d03437#diff-39e43af67c94abf75f6e686cb137c95e853dbcdfa1d680278048604e311a55cc instead a different sensors implementation is used.
At the time sensors would frequently crash, which was the reason for this change.
For exact reasons we should probably redo the sensors part to figure out if this issue still exists. And if it does, how to solve it while not sacrificing Tilt-to-wake functionality.
This is what I remember from having a conversation with @FlorentRevest. @FlorentRevest do you maybe have anything to add to this?
We apply https://github.com/AsteroidOS/meta-asteroid/blob/master/recipes-nemomobile/lipstick/lipstick/0005-BluetoothAgent-Advertise-less-hardware-capabilities-.patch to allow both ends (watch and phone) to only show a yes/no dialog. This does not appear to work on sturgeon
.
Regardless of what the AGENT_CAPABILITY
is set to it will always prompt on the phone for the keyboard. While on the desktop it doesn't. Normally I would assume that this issue is in the Sync app, but given that it works perfectly for ray
, firefish
and skipjack
I think this issue has something to do with the Bluetooth implementation on sturgeon
.
I will need to do further investigation in to what is missing here, but it seems some api isn't accepting the capabilities.
When trying to reboot or power off the watch from the settings the watch just completely locks up until the physical power button is held down.
/dev/input/event0 occasionally starts feeding asteroid-launcher with EOFs, requiring device restart.
After some debugging, it looks like close() is called on the /dev/input/event0 file descriptor from somewhere completely unrelated (qualcomm driver code most likely). This leads to the file descriptor in the QEvdevTouchScreenHandler class getting replaced with another one, ultimately resulting in getting a bunch of EOFs.
A (very hacky) fix was attempted by firewalling close() using LD_PRELOAD, but as the close()-calling code does not use libc, this does not work. ptrace based firewall would probably work.
Interestingly, restarting asteroid-launcher.service after bootup always results in correctly working touchscreen. Possibly running a dummy Qt application before lipstick could prevent this failure form occuring?
Please π fix one out of two as soon as possible.reflashed stock room but love to use asteroidos.
Just to summarize for now:
opkg configure
bug (battery undefined%) AsteroidOS/asteroid#94 AsteroidOS/asteroid#95-------------------------------------------------------- ORIGINAL --------------------------------------------------------
Hello,
we spoke briefly on IRC and @jrtberlin said that it might be possible to create a port for my beloved Smartwatch.
@MagneFire pointed me to the progress of the Huawei Watch 2 (Issue AsteroidOS/asteroid#101 ) and to get things started (in the future) I got the Partitiontable for you:
total 0
drwxr-xr-x 2 root root 740 1970-01-01 06:11 .
drwxr-xr-x 3 root root 800 1970-01-01 06:11 ..
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 DDR -> /dev/block/mmcblk0p18
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 aboot -> /dev/block/mmcblk0p4
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 abootbak -> /dev/block/mmcblk0p5
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 boot -> /dev/block/mmcblk0p21
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 cache -> /dev/block/mmcblk0p24
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 cmnlib -> /dev/block/mmcblk0p27
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 cmnlibbak -> /dev/block/mmcblk0p28
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 config -> /dev/block/mmcblk0p34
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 devinfo -> /dev/block/mmcblk0p26
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 fsc -> /dev/block/mmcblk0p15
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 fsg -> /dev/block/mmcblk0p19
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 keymaster -> /dev/block/mmcblk0p29
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 keymasterbak -> /dev/block/mmcblk0p30
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 keystore -> /dev/block/mmcblk0p32
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 misc -> /dev/block/mmcblk0p13
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 modem -> /dev/block/mmcblk0p1
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 modemst1 -> /dev/block/mmcblk0p11
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 modemst2 -> /dev/block/mmcblk0p12
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 oem -> /dev/block/mmcblk0p33
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 pad -> /dev/block/mmcblk0p10
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 persist -> /dev/block/mmcblk0p23
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 recovery -> /dev/block/mmcblk0p25
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 rpm -> /dev/block/mmcblk0p6
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 rpmbak -> /dev/block/mmcblk0p7
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 sbl1 -> /dev/block/mmcblk0p2
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 sbl1bak -> /dev/block/mmcblk0p3
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 sec -> /dev/block/mmcblk0p20
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 splash -> /dev/block/mmcblk0p17
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 ssd -> /dev/block/mmcblk0p16
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 system -> /dev/block/mmcblk0p22
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 ticnv -> /dev/block/mmcblk0p14
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 tz -> /dev/block/mmcblk0p8
lrwxrwxrwx 1 root root 20 1970-01-01 06:11 tzbak -> /dev/block/mmcblk0p9
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 userdata -> /dev/block/mmcblk0p35
lrwxrwxrwx 1 root root 21 1970-01-01 06:11 vendor -> /dev/block/mmcblk0p31
Kind regards,
(edit the code formatting on GitHub sucks)
Title pretty much describes it. When the outside brightness is very low, the screen brightness becomes too low effectively turning off the display. An easy fix would be to use a custom mce config file for this platform.
Example for reference: https://github.com/AsteroidOS/meta-tetra-hybris/blob/master/recipes-nemomobile/mce/mce/20als-defaults.ini
Currently AsteroidOS uses the Android 8 kernel, due to many changes in Android 9 however, it is proving difficult to get that kernel to work, eventually this will be worked on, but is very low priority.
The compass app needs a way to calibrate. It just jumps all over the place.
Battery is not calibrated. I've pushed the watch down to 20% before it dies but it usually dies around 60%. Battery life is still amazing at around 1.5 days. Is there any calibration process?
Flashed the latest harmony build (06-Feb-2019) on my Lemfo LES1 and noticed 2 bugs:
Time/Date settings are not kept. No mater how many times I set the time/date either in the first startup wizard or via the settings menu, when returning on the home screen date is always set at Jan 30th and time at 12:30 (? I am not so sure about the exact time)
Touch controls are not aligned according to the screen. For example if there is a button at the bottom (6 o'clock) pressing there does not do anything, in fact it's touch location is rotated 45 degrees clockwise and you have to touch at 9 o'clock for the button to respond.
Hi.
After trying asteroidOs mt6580 Harmony my Iq I3 watch had the screen rotated 180 degrees. Because of this I decided to try Inharmony. After installing and turning it on the screen did not respond but the screen orientation was in the correct orientation.
I would appreciate it if you could solve this.
Thank you very much for the great work.
Hello,
I'm using 1.0 and it sometimes gets stuck forever on the "SmartWatch 3" boot screen and I have to force reboot the watch (by pressing the button for a few seconds), then it usually boot correctly (but can also get stuck again).
It seems pretty random but I'd say it happens ~1/3 of the time.
I have been using version swift for a while with no issue besides the missing features, such as no microphone of course. Suddenly today after turning my watch on after charging it over night, the watch is stuck in boot. I've tried to get the watch to be recognized by fastboot and adb, but both do not show a device. It does not enter boot loop, as it technically is stuck trying to boot. I can successfully get it to power down. The watch can still charge.
Also, as usual, the boot message says,
Device software can't be checked for corruption.
To pause boot, press side button
After pressing any of the buttons to pause,
Visit this link on another device: g.co/ABH
To continue boot, press side button
Sometimes if this the watch is pulled away from the charger while attempting to boot, the ASUS logo will display when placed back on the charger. Though, not consistently. This has only happened a few times.
I'll add more details when the watch receives more charge. With all of the details I've been picking up, the battery is nearly drained.
Right now Skipjack uses a generic System Directory, while this seems to be working fine for now, eventually I would like to make it system specific, especially as I already have the stock partition dumps.
Hello!
I managed to get the harmony nightly image of 15 October installed on my Kingwear 88 Pro (an MT6580 chip with Android 7 as the base Android underneath) by using an official firmware scatter and replacing the appropriate parts for boot, logo, and userdata to make it work. However, once I have the image installed, there are a few couple things that aren't working like I want them to.
The touch part of the watch face does not respond (or responds erratically) unless I'm also touching the top of the watchface. If I am touching the top of the watchface in the correct place, I can tap and (very carefully) swipe and the watch accepts the inputs as normal, at least for a little bit.
Attempting to power off the watch from the settings menu only causes it to lock up and requires me to hold down the button to hard-reboot, at which point the watch works perfectly fine again.
I was able to successfully pair the official Android companion app (from F-Droid) to the watch exactly once, and since then, the app can find the watch again, but it says it has difficulty communicating with the watch, and the watch does not show up as discoverable or paired on my Android 10 phone's Bluetooth screens. I would really like to have my notifications appear on my phone, but I can't seem to figure out how to get them talking with each other.
I do have access to the Ceres session on the watch, if there are specific logs that can be requested to help understand the situation. I do not, to the best of my knowledge, have adb access. If that would be helpful, I will need to know how to enable adb access and computer trust from within the AsteroidOS or Ceres session.
Thank you for making and maintaining AsteroidOS. I hope there's a solution we can discover for my watch.
Not sure if this is normal behaviour, but I flashed my Sturgeon with the nightly images from the webpage via instructions on how to install.
Kindly advise, as I would like to keep AsteroidOS and because seemingly there is no longer Android Wear available since it boots to a bootloop with error (too fast to read, but something to do with cache).
Surely a guru has seen this type of behaviour and could assist here?
Thanks in advance for all/any help!
Is bluetooth support possible and/or plained ?
Every thing else works fine just date reset on reboot.
It looks like the microphone doesn't work on smelt...
Currently all I can hear in audio recordings is complete silence.
The following command is used to start an audio recording.
gst-launch-1.0 pulsesrc ! audioconvert ! wavenc ! filesink location=recording.wav
I've had a quick look into the strace
log of pulseaudio, but nothing really stands out.
Also messed around with the options provided by https://github.com/mer-hybris/pulseaudio-modules-droid (input_atoi, set_parameters, etc). But this didn't change anything.
Any help with this issue is welcome π
Swift works great but bluetooth isn't supported #12 .
So I tried to enable wifi but I can find /etc/wpa_supplicant.conf
and wpa_cli
Is swift nightly build with wifi support ?
IMAGE_INSTALL += "android-tools android-system msm-fb-refresher brcm-patchram-plus iproute2 wpa-supplicant"
tl:dr;
Below testing is influenced by either choosing USB2 (not working) and USB3 (working) which was not known during taking the logs.
Using the nightly from 2021-12-24 on sparrow.
SDK Mode connection via ssh works right after the flash but fails to connect after reboot.
A: Observations during malfunctioning sdk mode:
fastboot devices
multiple timesssh [email protected]
during boot and for a minute after boot does always result in ssh: connect to host 192.168.2.15 port 22: Network is unreachable
.B: Even after reflashing to fresh state: (With cable connected during boot)
ssh: connect to host 192.168.2.15 port 22: No route to host
Network is unreachable
with no network showing up on computer.C: During runtime with working SDK Mode:
Network is unreachable
D: Edit, tested against 1.0 and found the SDK-Mode to work much more reliable.
Does that even make technical sense that the booloader image could influence SDK-Mode?
If not, i will test everything again to double check and wait longer for the device to settle after boot.
AsteroidOS currently has no concept of NFC as far as I'm aware, this will have to be from scratch after it is verified the core system can interact with it.
hi , i'm using a mooneye , and after installed it , i tried to connect to my phone but , he make a loop of connect/disconnect
i love this project and i want to use it every day , but i cannot do this
it see be a phone issue "Whyred with EvoX" but i don't know
i'm using the last snapshot release
sorry for my grammar , i'm italian
AsteroidOS (1.1 nightly) on AllCall W1 (harmony) repeatedly connects and disconnects to phone (AsteroidOS sync 0.17) several times in a row, stabilizes as connected for a few minutes, than rapidly connects and disconnects again. The phone and watch are physically very close to one another, yet this cycle continues on and on. I'm not sure if I can generate a log file to share or not. I didn't see any log settings with either app. Any ideas what might be going on? Thanks for your help.
Move from asteroid-alarmclock
On ZenWatch 3 (swift),
Alarmclock vibrates only one short pulse.With 8 august nightly image.
Reply:
FlorentRevest
You/Your device's maintainer needs to convert the android's timed-output vibrator driver to a ffmemless driver. Similarly to what has been done here: https://github.com/AsteroidOS/meta-dory-hybris/blob/master/recipes-kernel/linux/linux-dory/0003-msm_pwm_vibrator-Convert-timed_output-APIs-to-ff_mem.patch and here: https://github.com/AsteroidOS/meta-bass-hybris/blob/master/recipes-kernel/linux/linux-bass/0004-msm_pwm_vibrator-Convert-timed_output-APIs-to-ff_mem.patch
Mainly for Wireless debugging for certain applications and issues
For some time now, this watch has had quite some graphical glitches.
This is now especially apparent as we brought back support for QtGraphicalEffects
.
I was initially hoping that the move from the Lollipop base to the Marshmallow base would improve the situation, but unfortunately it hasn't...
Currently GPS does not work, AsteroidOS does have a test app that can verify GPS as soon as the hardware is believed to work
Currently, this repo says that it is for the skagen falster 2, rather than all Fossil gen 4 watches. It would be useful to add some information summarising the difference between the two builds (the display and multitouch drivers) and add a list of the Fossil gen 4 watches that fall into either category, with a label of whether they have been tested.
These are definitely fossil gen 4, there may be more:
Ray:
Skagen falster 2, tested
Fossil Q Venture HR
Misfit vapor 2 (41mm)
Firefish:
Fossil Q Explorist HR, tested
Diesel On Full Guard 2.5
Misfit vapor 2 (46mm)
The connected sensors are described in sensor_def_lenok.conf. However, they are not connected directly to the ARM core, but instead to the Hexagon DSP coprocessor.
The kernel loads the (full of debug printf strings!) firmware to the coprocessor from /system/vendor/firmware/adsb.*
, and then setups several /dev files which are presumably used by the original Android code to interface with the coprocessor using FastRPC.
The /dev/adsprpc-smd ioctls are described in the kernel documentation. What is missing is description of the RPC methods provided by the LG code.
These could likely be reverse engineered by statically analyzing the DSP firmware or by stracing ioctl calls in Android.
When you remove the watch from the charger it doesn't wake up. This causes the notifications about usb disconnect and charge status to wait till first time you manually wake the watch.
The option to turn it off/on in the pulldown settings is there, but it does nothing. Opening settings, it just says Bluetooth is off, and AsteroidOS Sync from F-Droid is unable to find the watch.
On my installation of latest nightly, I'm not able to use adb since the watch is no longer getting recognized.
Okay so i just execute the command on a Linux with the watch connected like you said and the command prompt showed me this
Product: MT65XX Android phone
Manufacturer: MΓ©diateur
SerialNumber: 0123456789ABCDEF
So is it possible to install AsteroidOS on it ?
Thanks
Arthur
Hey, so this might be kind of a small stupid thing, but I noticed that when I set a timer on AsteroidOS on my mooneye watch, there's no sound or vibrations when the timer finishes. A little popup thing will appear saying the timer has finished, but that's it. I have the little vibrations toggle turned on in the quick settings panel (the thing that appears when you swipe down from the watch face) but it still doesn't work. Any ideas on what might be going on?
Likely during set up of the new animated bootlogo, dimensions for the bootlogo have drastically changed in the recent nightlies to approximately 1/2 or at least 2/3 of the bootlogo in 1.0 state.
Measuring the size difference showed the logo shrunk by 30% compared to the previous state.
Was that change actually wanted?
If so, i'd like to argue that the bigger logo was more obvious and the animation we use now more noticeable possibly.
While porting AsteroidOS to the Moto 360 2015 I kept track of the different issues. Here is one of them. These have been transferred over from my personal repository and are here in the hopes that it will help other porters solve similar issues.
[9 June 2020]
The Moto 360, like most watches, has a dedicated microcontroller that interfaces with sensors.
This means that a dedicated firmware file is written to the microcontroller and an interface with interrupts will between the kernel and the mcu.
On the Moto 360 the kernel module m4sensorhub
is responsible for loading a firmware file to the mcu. The name of the firmware file is: m4sensorhub-p0_dali.bin
. This is located in /system/etc/firmware/
.
The init script init.smelt.rc
starts the /system/bin/m4setup
when a firmware was successfully loaded to the mcu. This program sets up the paths for the different sensors.
When running test_sensors
the program hangs and the output of /system/bin/logcat
is:
06-07 20:47:51.698 560 560 D SensorHAL: Starting M4 poll thread
06-07 20:47:51.702 560 560 D SensorHAL: about to wait on condition
06-07 20:47:51.704 560 561 D SensorHAL: threadFunction
06-07 20:47:51.704 560 561 D SensorHAL: pollM4Thread: opening device: /sys/bus/i2c/drivers/m4sensorhub/2-0043/download_status
06-07 20:47:53.706 560 561 D SensorHAL: pollM4Thread: Download M4 complete
06-07 20:47:53.706 560 561 E SensorHAL: pollM4Thread: Property Setting fail
06-07 20:47:58.380 365 365 D SensorHAL: woken from the condition wait
06-07 20:47:58.380 365 365 E SensorHAL: Timed out in cond wait.
06-07 20:47:58.380 365 365 E SensorHAL: Failed to open the sensors
The pollM4Thread
line is not found in the logcat of Android. This could be due to different Android versions. Current smelt base for AsteroidOS is 6.0.1. While Android Wear lives currently at 7.1.1.
Cause of having no output for test_sensors
is currently unknown.
Stracing test_sensors also hangs at the same point.
writev(3, [{iov_base="\0030\2wR\335^\\\37\245)", iov_len=11}, {iov_base="\3", iov_len=1}, {iov_base="SensorHAL\0", iov_len=10}, {iov_base="Starting M4 poll thread\0", iov_len=24}], 4) = 46
mmap2(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xb6257000
mprotect(0xb6258000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0xb6a56f48, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb6a57478, tls=0xb6a578d0, child_tidptr=0xb6a57478) = 561
getuid32() = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1591562871, tv_nsec=702621856}) = 0
gettid() = 560
writev(3, [{iov_base="\0030\2wR\335^\240(\341)", iov_len=11}, {iov_base="\3", iov_len=1}, {iov_base="SensorHAL\0", iov_len=10}, {iov_base="about to wait on condition\0", iov_len=27}], 4) = 49
clock_gettime(CLOCK_REALTIME, {tv_sec=1591562871, tv_nsec=704192429}) = 0
futex(0x5e2d08, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1591563051, tv_nsec=704192429}, FUTEX_BITSET_MATCH_ANY
[HANGS HERE]
Currently none of these sensors work, investigation needed.
I downloaded the nightly build and followed the real installation instructions, however I'm also getting the bootloop between the LG splash screen and AsteroidOS logo. Bootlocker is unlocked though SecureBoot is enabled.
While porting AsteroidOS to the Moto 360 2015 I kept track of the different issues. Here is one of them. These have been transferred over from my personal repository and are here in the hopes that it will help other porters solve similar issues.
[9 June 2020]
AsteroidOS currently boots to only the AsteroidOS logo. Access to the system(i.e. ssh,etc) is possible.
It is unclear where the error really resides. Errors are observed on multiple places: dmesg and logcat.
The setup of the compositor seems to be ok:
06-07 18:40:56.359 412 412 D qdhwcomposer: int qhwc::adRead(): /sys/class/graphics/fb-1/ad could not be opened : No such file or directory
06-07 18:40:56.360 412 412 I qdhwcomposer: Initializing Qualcomm Hardware Composer
06-07 18:40:56.360 412 412 I qdhwcomposer: MDP version: 500
06-07 18:40:56.360 412 412 I qdhwcomposer: hwc_registerProcs
06-07 18:40:56.360 412 412 I qdhwcomposer: Initializing UEVENT Thread
06-07 18:40:56.360 412 412 I qdhwcomposer: Initializing VSYNC Thread
06-07 18:40:56.361 412 412 E cutils-trace: Error opening trace file: Permission denied (13)
06-07 18:40:56.368 412 412 I Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 09/28/15, cb423fe, Ib3272dc427
06-07 18:40:56.385 412 442 I qdhwcomposer: vsync_loop: Reading event 0 for dpy 0 from /sys/class/graphics/fb0/vsync_event
06-07 18:40:56.385 412 442 I qdhwcomposer: vsync_loop: Reading event 1 for dpy 0 from /sys/class/graphics/fb0/show_blank_event
06-07 18:40:56.385 412 442 I qdhwcomposer: vsync_loop: Reading event 0 for dpy 1 from /sys/class/graphics/fb-1/vsync_event
06-07 18:40:56.385 412 442 I qdhwcomposer: vsync_loop: Reading event 1 for dpy 1 from /sys/class/graphics/fb-1/show_blank_event
The no such file for adRead() does not appear to be important according to multiple resources(mostly merproject.org).
The Permission Denied also ocures on sturgeon(which is fully functional), so this is not important either.
The logcat is spammed repeatedly with the following errors:
06-07 18:41:03.959 412 453 E qdoverlay: Bad ov dump: mdp_overlay z=0 fg=0 alpha=255 mask=-1 flags=0x20000 id=-1
06-07 18:41:03.959 412 453 E qdoverlay: src msmfb_img w=384 h=330 format=13 MDP_RGBA_8888
06-07 18:41:03.959 412 453 E qdoverlay: src_rect mdp_rect x=0 y=0 w=360 h=330
06-07 18:41:03.959 412 453 E qdoverlay: dst_rect mdp_rect x=0 y=0 w=360 h=330
Which seems logical, the screen width of the Moto 360 is not 384 but 360. (Hey! The screen seems to be rotated π , good to know π ) interestingly, this error also occurs on Android Wear but it is only repeated four times.
dmesg shows the following errors:
[ 25.480276] mdss_mdp_pipe_init: no 2 type pipes available
[ 25.480293] mdss_mdp_overlay_pipe_setup: error allocating pipe. flags=0x20000
Of which the last line is repeatedly spammed to the console. This error is not found on Android Wear. So finding a solution to this one may result in a fix for the compositor.
asteroid-launcher
runs fine, without any errors:
Jun 07 17:38:23 smelt asteroid-launcher[408]: == hwcomposer module ==
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Address: 0xb42a2004
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Module API Version: 2
Jun 07 17:38:23 smelt asteroid-launcher[408]: * HAL API Version: 0
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Identifier: hwcomposer
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Name: Qualcomm Hardware Composer Module
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Author: CodeAurora Forum
Jun 07 17:38:23 smelt asteroid-launcher[408]: == hwcomposer module ==
Jun 07 17:38:23 smelt asteroid-launcher[408]: library "libscale.so" not found
Jun 07 17:38:23 smelt asteroid-launcher[408]: == hwcomposer device ==
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Version: 1040001 (interpreted as 1040001)
Jun 07 17:38:23 smelt asteroid-launcher[408]: * Module: 0xb42a2004
Jun 07 17:38:23 smelt asteroid-launcher[408]: == hwcomposer device ==
Jun 07 17:38:23 smelt asteroid-launcher[408]: QEglScreen 0x362c98
Jun 07 17:38:23 smelt asteroid-launcher[408]: evdevtouch: /dev/input/event0: Invalid ABS limits, behavior unspecified
Jun 07 17:38:23 smelt asteroid-launcher[408]: Notifications restored: 0
The screen just stays on the AsteroidOS logo.
Apologies if this is not the best repo to create the issue. And also I am aware that this is probably not a bug but a support request, but I don't know where else to go.
I'm following the instructions on https://asteroidos.org/wiki/creating-an-asteroid-app/
I have successfully built the SDK (because I misread and didn't realise that you can simply download a prebuilt one), after making the change to "stime()" that I mentioned in #5
I have configured QtCreator as described, except the stuff about Qt Versions and Compilers has moved from "Build & Run" to "Kits" in the Options.
I can successfully compile the asteroid-stopwatch app. When I try to run it, QtCreator complains:
:- 1: error: Local file "/home/jes/build-asteroid-stopwatch-Unnamed-Debug/asteroid-stopwatch.desktop" does not exist.
I have solved this by copying the asteroid-stopwatch.desktop file I generated in ~/asteroid-stopwatch into the build directory. Possibly this is where my next problem comes from:
With .desktop file in place, if I try to run the app, I get this message:
11:19:36: Starting /usr/bin/asteroid-stopwatch ...
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: hwcomposer, minimal, offscreen, vnc, wayland-egl, wayland.
11:19:36: Remote process crashed.
But if I SSH into the watch over USB and run the app using invoker
, it works fine. So presumably something about how QtCreator tries to run the app is not quite right. I'm guessing that it needs different contents in the .desktop file, but can't work out how to proceed.
test_sensors reports:
Hardware module ID: sensors
Hardware module Name: MultiHal Sensor Module
Hardware module Author: Google, Inc
Hardware module API version: 0x1
Hardware HAL API version: 0x1
Poll device version: 0x1030001
API VERSION 0.1 (legacy): 0x1
API VERSION 0.1: 0x65537
API VERSION 1.0: 0x16777217
API VERSION 1.1: 0x16842753
API VERSION 1.2: 0x16908289
API VERSION 1.3: 0x16973825
API VERSION 1.4: 0x17039361
Got 0 sensors
sensors.qcom starts without error, sensorfwd also runs and no error in the kernel log that looks related. Hence, I'm not really sure where to investigate further.
sensors.swift.so is in /system/lib/hw/, sensors.ssc.so is in /system/vendor/lib/
If this is not the correct place to have this issue just let me know. I am seeing an issue where sometimes I will see a notification on my watch that I am unable to dismiss. The button at the bottom of the notification will not work and if you swipe down and use the dismiss in the menu it also fails. The "Dismiss all" will clear the stuck notification.
This is not a constant issue. I will start watching what notifications display this behavior and update this issue if I see any patterns.
AsteroidOS relies on the HWcomposer 1.4 or 1.5 HAL API for Always-on-Display functionality.
(in)harmony based watches have support for HWcomposer 1.4 but for some reason the screen still powers off after transitioning to ambient mode.
Currently, it seems that the blanking state of the display is controlled in two places, namely: mce (https://github.com/AsteroidOS/mce/blob/master/mce-fbdev.c#L276) and hwcomposer.
This works fine for most devices, but on tetra
I've observed that the blanking state shouldn't change when entering AOD mode. Something that we could try to do, is simply disable blanking from mce and let this be handled by the hwcomposer.
This might however not work as the Android base (that contains the hwcomposer) doesn't actually seem to have support for Always-on-Display functionality either. If this is the case then a set of patches are likely to be needed for the kernel to support this functionality. That's assuming that the hardware already supports this too.
This is the reason why the watch only reaches about a 7 hours of battery life.
Recently, I found out that the watch never suspends (suspend is not the same as deep sleep). The cause of that was the gps
daemon was holding a wakelock until it found the time via NTP. Removing this daemon (AsteroidOS/meta-tetra-hybris@9db6a30) did allow the system to go into suspend mode, but never into deep sleep mode.
Current cause is unknown.
Here are some relevant parts of the kernel log:
May 20 20:04:22 tetra kernel: PM: suspend entry 2021-05-20 20:04:22.120605468 UTC
May 20 20:04:22 tetra kernel: PM: Syncing filesystems ... done.
May 20 20:04:22 tetra kernel: PM: Preparing system for mem sleep
May 20 20:05:17 tetra kernel: IPC_ApSleepModeSet state 1 time 7219
May 20 20:05:17 tetra kernel: Freezing user space processes ... (elapsed 0.001 seconds) done.
May 20 20:05:17 tetra kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
May 20 20:05:17 tetra kernel: PM: Entering mem sleep
May 20 20:05:17 tetra kernel: Suspending console(s) (use no_console_suspend to debug)
May 20 20:05:17 tetra kernel: bcmpmu_read_time: err=0 time=121.4.20.20.4.22
May 20 20:05:17 tetra kernel: bcmpmu_read_time: err=0 time=121.4.20.20.4.22
May 20 20:05:17 tetra kernel: bcm_hsotgctrl_is_suspend_allowed: 1
May 20 20:05:17 tetra kernel: bcmpmu_rtc_suspend: ####
May 20 20:05:17 tetra kernel: bcmpmu_alarm_irq_enable: RTC alarm 1
May 20 20:05:17 tetra kernel: bcmpmu59xxx_set_irq_mask: irq 56 mask 1
May 20 20:05:17 tetra kernel: bcmpmu59xxx_set_irq_mask: addr 1000037 bit 1
May 20 20:05:17 tetra kernel: bcmsdh_sdmmc_suspend
May 20 20:05:17 tetra kernel: PM: suspend of devices complete after 8.819 msecs
May 20 20:05:17 tetra kernel: PM: suspend devices took 0.010 seconds
May 20 20:05:17 tetra kernel: PM: late suspend of devices complete after 0.762 msecs
May 20 20:05:17 tetra kernel: PM: noirq suspend of devices complete after 0.885 msecs
May 20 20:05:17 tetra kernel: Disabling non-boot CPUs ...
May 20 20:05:17 tetra kernel: --kona_mach_pm_enter: state = 3 --
May 20 20:05:17 tetra kernel: --kona_mach_pm_enter:suspend->enter--
May 20 20:05:17 tetra kernel: Timer value before suspend: 2365988
May 20 20:05:17 tetra kernel: Timer value when resume: 4168161
May 20 20:05:17 tetra kernel: Approx Suspend Time: 54997ms
May 20 20:05:17 tetra kernel: Total Duration: 54997ms
May 20 20:05:17 tetra kernel: System in deepsleep: 0ms
May 20 20:05:17 tetra kernel: Suspended for 0.000 seconds
May 20 20:05:17 tetra kernel: petting the pmu wd
May 20 20:05:17 tetra kernel: PM: noirq resume of devices complete after 0.396 msecs
May 20 20:05:17 tetra kernel: PM: early resume of devices complete after 0.518 msecs
May 20 20:05:17 tetra kernel: bcmsdh_sdmmc_resumebcmsdh_sdmmc_resume
May 20 20:05:17 tetra kernel: bcmpmu_rtc_resume: ####
May 20 20:05:17 tetra kernel: bcmpmu_alarm_irq_enable: RTC alarm 0
May 20 20:05:17 tetra kernel: bcmpmu59xxx_set_irq_mask: irq 56 mask 0
May 20 20:05:17 tetra kernel: bcmpmu59xxx_set_irq_mask: addr 1000037 bit 1
May 20 20:05:17 tetra kernel: bcmpmu_read_time: err=0 time=121.4.20.20.5.17
May 20 20:05:17 tetra kernel: PM: resume of devices complete after 60.913 msecs
May 20 20:05:17 tetra kernel: PM: resume devices took 0.070 seconds
May 20 20:05:17 tetra kernel: PM: Finishing wakeup.
May 20 20:05:17 tetra kernel: Restarting tasks ... done.
May 20 20:05:17 tetra kernel: IPC_ApSleepModeSet state 0 time 7230
May 20 20:05:17 tetra kernel: PM: suspend exit 2021-05-20 20:05:17.044647217 UTC
Notice that the watch does suspend, but never deep sleeps. Looking at the kernel source, it seems that the CCU profiler provides the information about deepsleep: https://android.googlesource.com/kernel/bcm/+/refs/heads/android-bcm-tetra-3.10-marshmallow-mr1-wear-release/arch/arm/plat-kona/kona_pm.c#278
I have no idea where to look other than the Bluetooth stack, as the kernel we use has some patches on top of that.
When using the stopwatch and timer tools, they seem to lag behind and stutter. If the watch dims or goes back to the original watchface after a few moments. The timer will stop completely until it is opened manually again. This also applies to the stopwatch tool. I am not sure if this is a known or common bug, so I figured I'd ask here.
Oh, I am currently on the 1.1 nightly build, if that helps.
Multiple users have reported frequent Bluetooth disconnects. The cause is currently unknown.
It's quite likely that I simply don't know how to set it up, but no matter what I do, I can't seem to see the watchface just by tilting the watch?
AsteroidOS is great btw. I found the install process very straightforward, after I'd managed to pry the crusted-up glue off the back of this watch :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.