Coder Social home page Coder Social logo

meta-smartwatch's People

Contributors

anyc avatar asara avatar atx avatar bencord0 avatar beroset avatar chandlerswift avatar coderobe avatar daniellandau avatar dodoradio avatar dv1 avatar eltmosen avatar fergy avatar florentrevest avatar ilpianista avatar jrtberlin avatar koraksilvercloud avatar lecrisut avatar littlefox94 avatar locusf avatar logic avatar lrs121 avatar magnefire avatar stylefish avatar theappleman avatar voidanix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meta-smartwatch's Issues

Soft bricking

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?

Bluetooth is broken

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.

Tilt-to-Wake sensor does not exist.

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?

Bluetooth pairing ignores capabilities.

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.

AllCall W1 reboot/power off fails

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.

Fix /dev/input/event0 getting closed in asteroid-launcher

/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?

Add Support for Mobvoi TicWatch Pro (catfish)

Just to summarize for now:

  • Boot
  • ADB
  • WiFi
  • Bluetooth
    • Pairing
    • Weather
    • Find
    • Notification
    • Screenshot
    • Time
      • Correct time on LCD
    • ❔ Calls
  • Sensors
    • Heartbeat
    • Steps
      • Fitness App (AsteroidOS general feature)
    • Tap-To-Wake
    • Automatic Screen Brightness (Ambient Light)
    • Tilt-To-Wake
    • Gyro
    • Compass
  • Low Power LCD (Reference)
    • Step Counter

TODO Features

  • MTP
  • opkg configure bug (battery undefined%) AsteroidOS/asteroid#94 AsteroidOS/asteroid#95
  • Hardware Buttons
    • Top Button atm un-/locking screen. Should/Could be "home" to watchface.
    • Bottom Button does nothing
  • Automatic WiFi (To safe energy)

-------------------------------------------------------- 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)

Boot watch using Android 9 (Pie) Kernel

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.

AllCall W1 Battery calibration

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?

Latest harmony nightly (06-Feb-2019) touch controls are 45 degrees rotated and time/date settings are not saved

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.

Touchscreen not working en IQ I3

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.

Boot sometimes hangs forever

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.

ASUS ZenWatch WI503Q now stuck in boot

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.

Make a system specific /system directory build

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.

Touch and Bluetooth Issues with KingWear 88 Pro and harmony image.

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.

  1. 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.

  2. 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.

  3. 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.

Can only get to OS via "fastboot continue"

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.

  • After booting into AsteroidOS and setting it up - all is (seems) well
  • Reboot via pull down menu and go to strait to bootloop with an error flashing too fast to see, something about cache mount problem?
  • In order to even have a functional watch, I must reboot to fastboot and issue via computer "fastboot continue"
  • If my watch is ever out of battery or something else and I do not have a PC with fastboot/ADB with me (and cradle), I will never be able to use this watch.

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!

Bluetooth not enable

Is bluetooth support possible and/or plained ?
Every thing else works fine just date reset on reboot.

Microphone not working

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 πŸ˜„

Logs:
pulse_smelt.log
pulse_smelt_strace.log

Is nightly build with wpa_supplicant ?

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"

SSH/SDK Mode only working after flash

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:

  • Cable is having good connection, checked using fastboot devices multiple times
  • There is no "Using SDK Mode" message when plugin in the usb cable
  • Spaming ssh [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.
  • Plug usb cable in and out does not help
  • Multiple reboots did not help
  • Booting with cable not plugged in, plugging it in some seconds after boot does not help.
  • Toggling usb mode to "charge only" and back does not help

B: Even after reflashing to fresh state: (With cable connected during boot)

  • right after first boot, with the usb cable still connected from fastboot flash, the SDK Network shows up on my linux computer
  • But there is also no connection possible ssh: connect to host 192.168.2.15 port 22: No route to host
  • Plugging the cable in and out again results in Network is unreachable with no network showing up on computer.

I can reliably get SDK mode to work on first boot after flash now by disconnecting the usb cable after flash and reconnect it after it settled after boot.

C: During runtime with working SDK Mode:

  • It persists ceres restart
  • But when plugging the cable in and out, there is no further connection possible Network is unreachable
  • Then rebooting from settings and booting with usb not connected and letting it settle, sadly does not have the same success but shows behaviour described in A:

D: Edit, tested against 1.0 and found the SDK-Mode to work much more reliable.

  • Booting with usb cable plugged in only sometimes leads to A:
  • Plugging the cable out and back in always result in working SDK-Mode.

Edit 2, UGH, this is awkward.

  • Flashing only the 1.0 bootloader image with the 2021-12-24 nightly results in same good performance then when flashing both 1.0 images completely in D:.
  • This happened by accident when not adapting cli commands to renamed image files.

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.

Get NFC Working

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.

Bt works , but didn't connect to my phone

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

AllCall W1 repeatedly connects and disconnects from phone

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.

Alarmclock vibrate only one time

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

Get WiFi working

Mainly for Wireless debugging for certain applications and issues

Graphical glitches.

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...

Change readme to explain the differences between firefish and ray

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)

Make sensors work

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.

Bluetooth does not work on LG G 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.

ADB not working

On my installation of latest nightly, I'm not able to use adb since the watch is no longer getting recognized.

Mauboussin MG connect

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

No sound or vibration when timer ends

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?

Bootlogo is much smaller in nightlies when compared to 1.0

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.

30percentsmallerlogo

Sensors is broken

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]

Nightly build real installation failure

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.

Compositor is broken

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.

Problem deploying an app

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.

Sensors not working

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/

Notifications "Dismiss" not responding

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.

Always-on-Display doesn't work

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.

Watch never enters deepsleep.

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.

Timer and Stopwatch lag/hang?

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.

Tilt-to-wake not working

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 :)

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.