<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[PINE64 - Development Discussion on PineTime]]></title>
		<link>https://forum.pine64.org/</link>
		<description><![CDATA[PINE64 - https://forum.pine64.org]]></description>
		<pubDate>Tue, 29 Sep 2026 12:05:47 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[SlateOS feedback needed!]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=20362</link>
			<pubDate>Mon, 24 Aug 2026 14:00:37 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=30186">highjumpman</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=20362</guid>
			<description><![CDATA[Hi all, I've pushed some more updates for SlateOS and its companion app, mostly to improve the battery life:<br />
<br />
- Vibration toggle<br />
- Optimisation of app to watch comms<br />
- A fix for the launcher not being available after reconnecting<br />
- The companion app now finds the app after it was away from the phone<br />
<br />
I would really like your feedback! I'm also curious for more sub-app ideas, and if anyone has tried writing their own.]]></description>
			<content:encoded><![CDATA[Hi all, I've pushed some more updates for SlateOS and its companion app, mostly to improve the battery life:<br />
<br />
- Vibration toggle<br />
- Optimisation of app to watch comms<br />
- A fix for the launcher not being available after reconnecting<br />
- The companion app now finds the app after it was away from the phone<br />
<br />
I would really like your feedback! I'm also curious for more sub-app ideas, and if anyone has tried writing their own.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[New SlateOS features]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=20351</link>
			<pubDate>Tue, 18 Aug 2026 01:47:44 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=30186">highjumpman</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=20351</guid>
			<description><![CDATA[Hi, I've actually pushed quite a few SlateOS fixes and updates to <a href="https://github.com/LeaCreative/SlateOS" target="_blank" rel="noopener" class="mycode_url">Github</a>:<br />
<ul class="mycode_list"><li>Fix for accelerometer.<br />
</li>
<li>Fix for overlapping buttons on the watch.<br />
</li>
<li>Fix for recurring notification vibrations.<br />
</li>
<li>Companion app UI reworked.<br />
</li>
<li>Shake-to-wake in addition to raise to wake.<br />
</li>
<li>Sensitivity settings for both accel-based wake methods.<br />
</li>
<li>Deactivation of face diagnostics.<br />
</li>
<li>Notification on the watch.<br />
</li>
<li>Watch screen navigation indicators.<br />
</li>
<li>Watch face, button and text colours!<br />
</li>
<li>Media control sub-app (tested with Spotify).<br />
</li>
<li>Weather sub-app with tides (I live near the sea) (uses phone GPS).<br />
</li>
<li>Turn-by-turn Navigation sub-app for OsmAnd Free and Pro (no affiliation there!). Start navigation in OsmAnd and open the Vavigtation sub-app on the watch.<br />
</li>
<li>RSS news reader sub app (configure via its settings in the companion app sub-app repository).<br />
</li>
<li>Companion app sub-app connectors for http, calendar, alarms, HealthConnect, Home Assistant.<br />
</li>
</ul>
]]></description>
			<content:encoded><![CDATA[Hi, I've actually pushed quite a few SlateOS fixes and updates to <a href="https://github.com/LeaCreative/SlateOS" target="_blank" rel="noopener" class="mycode_url">Github</a>:<br />
<ul class="mycode_list"><li>Fix for accelerometer.<br />
</li>
<li>Fix for overlapping buttons on the watch.<br />
</li>
<li>Fix for recurring notification vibrations.<br />
</li>
<li>Companion app UI reworked.<br />
</li>
<li>Shake-to-wake in addition to raise to wake.<br />
</li>
<li>Sensitivity settings for both accel-based wake methods.<br />
</li>
<li>Deactivation of face diagnostics.<br />
</li>
<li>Notification on the watch.<br />
</li>
<li>Watch screen navigation indicators.<br />
</li>
<li>Watch face, button and text colours!<br />
</li>
<li>Media control sub-app (tested with Spotify).<br />
</li>
<li>Weather sub-app with tides (I live near the sea) (uses phone GPS).<br />
</li>
<li>Turn-by-turn Navigation sub-app for OsmAnd Free and Pro (no affiliation there!). Start navigation in OsmAnd and open the Vavigtation sub-app on the watch.<br />
</li>
<li>RSS news reader sub app (configure via its settings in the companion app sub-app repository).<br />
</li>
<li>Companion app sub-app connectors for http, calendar, alarms, HealthConnect, Home Assistant.<br />
</li>
</ul>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SlateOS for PineTime]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=20348</link>
			<pubDate>Tue, 11 Aug 2026 10:57:54 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=30186">highjumpman</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=20348</guid>
			<description><![CDATA[Hi everyone!<br />
<br />
I humbly present SlateOS, a new open-source firmware for the PineTime, which supports JavaScript sub-apps that can be sideloaded without changing the firmware. Its low-level functions are based on InfiniTime and, in turn, FreeRTOS, so a big thank you to all those involved in these projects!<br />
<br />
<a href="https://github.com/LeaCreative/SlateOS" target="_blank" rel="noopener" class="mycode_url">https://github.com/LeaCreative/SlateOS</a><br />
<br />
I love my PineTime and wanted to be able to easily create apps for it. So I came up with the idea of using the watch as a thin client for my Android phone. In offline mode, the  SlateOS offers watch face, step counter and heart rate sensing. <br />
<br />
Connect it to the companion app on your phone and you can open the app launcher, which the app populates. The JS sub-apps, basically packaged JS code, run on your phone in the companion app, which tells the watch what to draw and accepts user input. This enables use of the phone's hardware, such as its GPS receiver. <br />
<br />
In the companion app you can select which sub-apps you want listed in SlateOS' launcher. You can write your own JS sub-apps and I can't wait to see what you come up with! Just please read the sub-app rules doc, so that you'll be able to get it right.<br />
<br />
I'd love to hear what you think about this!<br />
<br />
Cheers,<br />
Daniel]]></description>
			<content:encoded><![CDATA[Hi everyone!<br />
<br />
I humbly present SlateOS, a new open-source firmware for the PineTime, which supports JavaScript sub-apps that can be sideloaded without changing the firmware. Its low-level functions are based on InfiniTime and, in turn, FreeRTOS, so a big thank you to all those involved in these projects!<br />
<br />
<a href="https://github.com/LeaCreative/SlateOS" target="_blank" rel="noopener" class="mycode_url">https://github.com/LeaCreative/SlateOS</a><br />
<br />
I love my PineTime and wanted to be able to easily create apps for it. So I came up with the idea of using the watch as a thin client for my Android phone. In offline mode, the  SlateOS offers watch face, step counter and heart rate sensing. <br />
<br />
Connect it to the companion app on your phone and you can open the app launcher, which the app populates. The JS sub-apps, basically packaged JS code, run on your phone in the companion app, which tells the watch what to draw and accepts user input. This enables use of the phone's hardware, such as its GPS receiver. <br />
<br />
In the companion app you can select which sub-apps you want listed in SlateOS' launcher. You can write your own JS sub-apps and I can't wait to see what you come up with! Just please read the sub-app rules doc, so that you'll be able to get it right.<br />
<br />
I'd love to hear what you think about this!<br />
<br />
Cheers,<br />
Daniel]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Update pinetime bootloader OTA?]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=20029</link>
			<pubDate>Sat, 04 Oct 2025 21:25:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=29421">oscar-gardiazabal</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=20029</guid>
			<description><![CDATA[Hi, I'm trying to upload a modified pinetime bootloader using the reloader-mcuboot-1.0.1.zip from <a href="https://github.com/InfiniTimeOrg/pinetime-mcuboot-bootloader/releases/tag/1.0.1" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/pinetim.../tag/1.0.1</a><br />
I tried with the simplest test possible changing the version of the header to 2.0.0 in the reloader-mcuboot.bin of the reloader-mcuboot.zip with:<br />
"printf '\x02\x00\x00\x00\x00\x00\x00\x00' | dd of=reloader-mcuboot.bin bs=1 seek=&#36;((0x14)) conv=notrunc"<br />
and build it again with the same command of the Makefile:<br />
"python3 -m nordicsemi dfu genpkg --dev-type 0x0052 --application reloader-mcuboot.bin reloader-mcuboot.zip"<br />
After uploading the zip with Watchmate for Linux I got the image is ok but the InfiniTime shows the same version for the bootloader "1.0.1".<br />
It is still possible to update the bootloader OTA? I'm missing something? Thank you!<br />
Last try was using: Python 3.10.13, adafruit-nrfutil version 0.5.3.post16]]></description>
			<content:encoded><![CDATA[Hi, I'm trying to upload a modified pinetime bootloader using the reloader-mcuboot-1.0.1.zip from <a href="https://github.com/InfiniTimeOrg/pinetime-mcuboot-bootloader/releases/tag/1.0.1" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/pinetim.../tag/1.0.1</a><br />
I tried with the simplest test possible changing the version of the header to 2.0.0 in the reloader-mcuboot.bin of the reloader-mcuboot.zip with:<br />
"printf '\x02\x00\x00\x00\x00\x00\x00\x00' | dd of=reloader-mcuboot.bin bs=1 seek=&#36;((0x14)) conv=notrunc"<br />
and build it again with the same command of the Makefile:<br />
"python3 -m nordicsemi dfu genpkg --dev-type 0x0052 --application reloader-mcuboot.bin reloader-mcuboot.zip"<br />
After uploading the zip with Watchmate for Linux I got the image is ok but the InfiniTime shows the same version for the bootloader "1.0.1".<br />
It is still possible to update the bootloader OTA? I'm missing something? Thank you!<br />
Last try was using: Python 3.10.13, adafruit-nrfutil version 0.5.3.post16]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[wasp-os bluetooth dev documentation?]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19627</link>
			<pubDate>Thu, 16 Jan 2025 21:43:17 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28856">vrtigo</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19627</guid>
			<description><![CDATA[Having a bit of a time trying to develop bluetooth on the PineTime under wasp-os 0.4.<br />
<br />
There is little documentation about this from what ive seen, but Ive figured out that I need to use ubluepy, and set up and advertise a service. I can do this, but it nukes the Nordic UART Service, leaving development from that point problematic. Ive tried adding the NUS service and characteristics using the UUID's found in pynus, but the app fails to load when I do so with very little information about whats wrong.<br />
<br />
Any ideas on how to move forward?]]></description>
			<content:encoded><![CDATA[Having a bit of a time trying to develop bluetooth on the PineTime under wasp-os 0.4.<br />
<br />
There is little documentation about this from what ive seen, but Ive figured out that I need to use ubluepy, and set up and advertise a service. I can do this, but it nukes the Nordic UART Service, leaving development from that point problematic. Ive tried adding the NUS service and characteristics using the UUID's found in pynus, but the app fails to load when I do so with very little information about whats wrong.<br />
<br />
Any ideas on how to move forward?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[keep state across invocations]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19482</link>
			<pubDate>Thu, 31 Oct 2024 19:06:29 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28610">lmamane</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19482</guid>
			<description><![CDATA[In InfiniTime, is there a way for my screen (app) to maintain some state across invocations? E.g. for app settings, but also for a stopwatch/timer that can resume even if the user switched to another screen and back. I would just store the time point at which the stopwatch/timer started, and then recompute the elapsed/remaining time from the current time point when it is reopened.]]></description>
			<content:encoded><![CDATA[In InfiniTime, is there a way for my screen (app) to maintain some state across invocations? E.g. for app settings, but also for a stopwatch/timer that can resume even if the user switched to another screen and back. I would just store the time point at which the stopwatch/timer started, and then recompute the elapsed/remaining time from the current time point when it is reopened.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[multithreading issue / SIGSEGV under InfiniSim]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19478</link>
			<pubDate>Sat, 26 Oct 2024 15:57:44 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28610">lmamane</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19478</guid>
			<description><![CDATA[I get various crashes/SIGSEGV/SIGFPE/uncaught exceptions/"mutex released when not held"/... when running InfiniTime under InfiniSim.<br />
<br />
I opened the discussion for one of the reproducible ones at <a href="https://github.com/InfiniTimeOrg/InfiniSim/issues/160" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/InfiniSim/issues/160</a><br />
<br />
Another reproducible one seems too subtle / incomprehensible for me, and it seems to me that different threads get mixed up. I was hoping someone here would have more clue than me.<br />
<br />
The backtrace looks like:<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Thread 5 "displayapp" received signal SIGSEGV, Segmentation fault.<br />
[Switching to Thread 0x7fffe29fe6c0 (LWP 642677)]<br />
0x00005555555cf26b in lv_refr_obj (obj=0x7ffff79f1c, mask_ori_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:892<br />
892&nbsp;&nbsp;&nbsp;&nbsp;    if(obj-&gt;hidden != 0) return;<br />
(gdb) bt<br />
#0  0x00005555555cf26b in lv_refr_obj (obj=0x7ffff79f1c, mask_ori_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:892<br />
#1  0x00005555555cf1d6 in lv_refr_obj_and_children (top_p=0x555556bb96c8, mask_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:867<br />
#2  0x00005555555cef04 in lv_refr_area_part (area_p=0x7fffdc0017c2) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:773<br />
#3  0x00005555555ce3d6 in lv_refr_area (area_p=0x7fffdc0017c2) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:515<br />
#4  0x00005555555cdf7a in lv_refr_areas () at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:405<br />
#5  0x00005555555cd9ba in _lv_disp_refr_task (task=0x7fffdc001918) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:204<br />
#6  0x00005555555e53e4 in lv_task_exec (task=0x7fffdc001918) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_misc/lv_task.c:386<br />
#7  0x00005555555e4e6f in lv_task_handler () at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_misc/lv_task.c:134<br />
#8  0x00005555555af57a in Pinetime::Applications::DisplayApp::Refresh (this=0x5555556a4ae0 &lt;displayApp&gt;) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/displayapp/DisplayApp.cpp:251<br />
#9  0x00005555555af208 in Pinetime::Applications::DisplayApp::Process (instance=0x5555556a4ae0 &lt;displayApp&gt;) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/displayapp/DisplayApp.cpp:149<br />
#10 0x0000555555609dec in sdl_function_wrapper (instance=0x5555556a5bf8 &lt;displayApp+4376&gt;) at /home/master/src/pinetime/InfiniSim/sim/task.cpp:61</code></div></div><br />
Note that according to <span style="font-family: Courier New;" class="mycode_font">gdb</span>, in frame 1 <span style="font-family: Courier New;" class="mycode_font">lv_refr_obj_and_children</span> is called with <span style="font-family: Courier New;" class="mycode_font">top_p=0x555556bb96c8</span> in thread <span style="font-family: Courier New;" class="mycode_font">LWP 642677</span>. I have modified this function to make debug outputs to a file, one file per thread, as follows:<br />
<br />
Near the top of the file:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#include &lt;stdio.h&gt;<br />
#define __USE_GNU<br />
#include &lt;unistd.h&gt;<br />
#undef __USE_GNU</code></div></div>then in the function:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>    char buf[40];<br />
    snprintf(buf, sizeof(buf), "VERBOSE_DEBUG_lv_core_%d.txt", gettid());<br />
    buf[sizeof(buf)-1] = (char)0;<br />
    FILE* vdf = fopen(buf, "a");</code></div></div>and then I <span style="font-family: Courier New;" class="mycode_font">fprintf(vdf, ...)</span><span style="font-family: Sans-serif;" class="mycode_font">, in particular I log the value of </span><span style="font-family: Courier New;" class="mycode_font">top_p</span><span style="font-family: Sans-serif;" class="mycode_font">. Now, the "funny thing" is according to the logs, <span style="font-family: Courier New;" class="mycode_font">lv_refr_obj_and_children</span> is called with <span style="font-family: Courier New;" class="mycode_font">top_p=0x555556bb96c8</span> only in thread </span><span style="font-family: Courier New;" class="mycode_font">642669</span><span style="font-family: Sans-serif;" class="mycode_font">!</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36; grep -l 96c8 VERBOSE_DEBUG_lv_core_6426*<br />
VERBOSE_DEBUG_lv_core_642669.txt</code></div></div><span style="font-family: Sans-serif;" class="mycode_font">According to </span><span style="font-family: Courier New;" class="mycode_font">gdb</span><span style="font-family: Sans-serif;" class="mycode_font">, that thread is:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Thread 1 (Thread 0x7ffff6e22cc0 (LWP 642669) "infinisim"):<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
29&nbsp;&nbsp;&nbsp;&nbsp;../sysdeps/unix/sysv/linux/poll.c: No such file or directory.<br />
(gdb) thread 1<br />
[Switching to thread 1 (Thread 0x7ffff6e22cc0 (LWP 642669))]<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
29&nbsp;&nbsp;&nbsp;&nbsp;in ../sysdeps/unix/sysv/linux/poll.c<br />
(gdb) bt<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
#1  0x00007ffff71f0d12 in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#2  0x00007ffff71f2d8f in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#3  0x00007ffff71f2f00 in xcb_wait_for_reply64 () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#4  0x00007ffff743810c in _XReply () from /lib/x86_64-linux-gnu/libX11.so.6<br />
#5  0x00007ffff74336ff in XSync () from /lib/x86_64-linux-gnu/libX11.so.6<br />
#6  0x00007ffff6498166 in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0<br />
#7  0x00007ffff648823b in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0<br />
#8  0x00007ffff7ecbbe6 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0<br />
#9  0x00007ffff7e2f276 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0<br />
#10 0x0000555555572074 in Framework::refresh (this=0x7fffffffdee0) at /home/master/src/pinetime/InfiniSim/main.cpp:609<br />
#11 0x000055555556f5d5 in main (argc=1, argv=0x7fffffffe0c8) at /home/master/src/pinetime/InfiniSim/main.cpp:1145</code></div></div><span style="font-family: Sans-serif;" class="mycode_font">Somehow the threads get mixed up???</span><br />
<br />
<span style="font-family: Sans-serif;" class="mycode_font">According to the logs, that function is called in thread 642677 only with values </span><span style="font-family: Courier New;" class="mycode_font">top_p = 0x7fffdc001958</span><span style="font-family: Sans-serif;" class="mycode_font">, </span><span style="font-family: Courier New;" class="mycode_font">0x7fffdc001c58</span><span style="font-family: Sans-serif;" class="mycode_font"> or </span><span style="font-family: Courier New;" class="mycode_font">0x7fffdc001d58</span><span style="font-family: Sans-serif;" class="mycode_font"> and each time it is called, </span><span style="font-family: Courier New;" class="mycode_font">lv_obj_get_parent(top_p) == NULL</span><span style="font-family: Sans-serif;" class="mycode_font"> (this is the value with which </span><span style="font-family: Courier New;" class="mycode_font">par</span><span style="font-family: Sans-serif;" class="mycode_font"> is initialised), meaning the function exits without entering the </span><span style="font-family: Courier New;" class="mycode_font">while(par != NULL)</span><span style="font-family: Sans-serif;" class="mycode_font"> loop, and never enters the </span><span style="font-family: Courier New;" class="mycode_font">lv_refr_obj</span><span style="font-family: Sans-serif;" class="mycode_font"> call where the SIGSEGV happens, which is the one in the loop.</span><br />
<br />
<span style="font-family: Sans-serif;" class="mycode_font">Still according to the logs, in thread 642669, all calls where </span><span style="font-family: Courier New;" class="mycode_font">top_p == 0x555556bb96c8</span><span style="font-family: Sans-serif;" class="mycode_font"> return, and the last call has another top_p value and has <span style="font-family: Courier New;" class="mycode_font">lv_obj_get_parent(top_p) == NULL</span>.</span>]]></description>
			<content:encoded><![CDATA[I get various crashes/SIGSEGV/SIGFPE/uncaught exceptions/"mutex released when not held"/... when running InfiniTime under InfiniSim.<br />
<br />
I opened the discussion for one of the reproducible ones at <a href="https://github.com/InfiniTimeOrg/InfiniSim/issues/160" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/InfiniSim/issues/160</a><br />
<br />
Another reproducible one seems too subtle / incomprehensible for me, and it seems to me that different threads get mixed up. I was hoping someone here would have more clue than me.<br />
<br />
The backtrace looks like:<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Thread 5 "displayapp" received signal SIGSEGV, Segmentation fault.<br />
[Switching to Thread 0x7fffe29fe6c0 (LWP 642677)]<br />
0x00005555555cf26b in lv_refr_obj (obj=0x7ffff79f1c, mask_ori_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:892<br />
892&nbsp;&nbsp;&nbsp;&nbsp;    if(obj-&gt;hidden != 0) return;<br />
(gdb) bt<br />
#0  0x00005555555cf26b in lv_refr_obj (obj=0x7ffff79f1c, mask_ori_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:892<br />
#1  0x00005555555cf1d6 in lv_refr_obj_and_children (top_p=0x555556bb96c8, mask_p=0x7fffe29fdb2e) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:867<br />
#2  0x00005555555cef04 in lv_refr_area_part (area_p=0x7fffdc0017c2) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:773<br />
#3  0x00005555555ce3d6 in lv_refr_area (area_p=0x7fffdc0017c2) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:515<br />
#4  0x00005555555cdf7a in lv_refr_areas () at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:405<br />
#5  0x00005555555cd9ba in _lv_disp_refr_task (task=0x7fffdc001918) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_core/lv_refr.c:204<br />
#6  0x00005555555e53e4 in lv_task_exec (task=0x7fffdc001918) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_misc/lv_task.c:386<br />
#7  0x00005555555e4e6f in lv_task_handler () at /home/master/src/pinetime/InfiniSim/InfiniTime/src/libs/lvgl/src/lv_misc/lv_task.c:134<br />
#8  0x00005555555af57a in Pinetime::Applications::DisplayApp::Refresh (this=0x5555556a4ae0 &lt;displayApp&gt;) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/displayapp/DisplayApp.cpp:251<br />
#9  0x00005555555af208 in Pinetime::Applications::DisplayApp::Process (instance=0x5555556a4ae0 &lt;displayApp&gt;) at /home/master/src/pinetime/InfiniSim/InfiniTime/src/displayapp/DisplayApp.cpp:149<br />
#10 0x0000555555609dec in sdl_function_wrapper (instance=0x5555556a5bf8 &lt;displayApp+4376&gt;) at /home/master/src/pinetime/InfiniSim/sim/task.cpp:61</code></div></div><br />
Note that according to <span style="font-family: Courier New;" class="mycode_font">gdb</span>, in frame 1 <span style="font-family: Courier New;" class="mycode_font">lv_refr_obj_and_children</span> is called with <span style="font-family: Courier New;" class="mycode_font">top_p=0x555556bb96c8</span> in thread <span style="font-family: Courier New;" class="mycode_font">LWP 642677</span>. I have modified this function to make debug outputs to a file, one file per thread, as follows:<br />
<br />
Near the top of the file:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#include &lt;stdio.h&gt;<br />
#define __USE_GNU<br />
#include &lt;unistd.h&gt;<br />
#undef __USE_GNU</code></div></div>then in the function:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>    char buf[40];<br />
    snprintf(buf, sizeof(buf), "VERBOSE_DEBUG_lv_core_%d.txt", gettid());<br />
    buf[sizeof(buf)-1] = (char)0;<br />
    FILE* vdf = fopen(buf, "a");</code></div></div>and then I <span style="font-family: Courier New;" class="mycode_font">fprintf(vdf, ...)</span><span style="font-family: Sans-serif;" class="mycode_font">, in particular I log the value of </span><span style="font-family: Courier New;" class="mycode_font">top_p</span><span style="font-family: Sans-serif;" class="mycode_font">. Now, the "funny thing" is according to the logs, <span style="font-family: Courier New;" class="mycode_font">lv_refr_obj_and_children</span> is called with <span style="font-family: Courier New;" class="mycode_font">top_p=0x555556bb96c8</span> only in thread </span><span style="font-family: Courier New;" class="mycode_font">642669</span><span style="font-family: Sans-serif;" class="mycode_font">!</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36; grep -l 96c8 VERBOSE_DEBUG_lv_core_6426*<br />
VERBOSE_DEBUG_lv_core_642669.txt</code></div></div><span style="font-family: Sans-serif;" class="mycode_font">According to </span><span style="font-family: Courier New;" class="mycode_font">gdb</span><span style="font-family: Sans-serif;" class="mycode_font">, that thread is:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Thread 1 (Thread 0x7ffff6e22cc0 (LWP 642669) "infinisim"):<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
29&nbsp;&nbsp;&nbsp;&nbsp;../sysdeps/unix/sysv/linux/poll.c: No such file or directory.<br />
(gdb) thread 1<br />
[Switching to thread 1 (Thread 0x7ffff6e22cc0 (LWP 642669))]<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
29&nbsp;&nbsp;&nbsp;&nbsp;in ../sysdeps/unix/sysv/linux/poll.c<br />
(gdb) bt<br />
#0  0x00007ffff790d11f in __GI___poll (fds=0x7fffffffdac8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29<br />
#1  0x00007ffff71f0d12 in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#2  0x00007ffff71f2d8f in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#3  0x00007ffff71f2f00 in xcb_wait_for_reply64 () from /lib/x86_64-linux-gnu/libxcb.so.1<br />
#4  0x00007ffff743810c in _XReply () from /lib/x86_64-linux-gnu/libX11.so.6<br />
#5  0x00007ffff74336ff in XSync () from /lib/x86_64-linux-gnu/libX11.so.6<br />
#6  0x00007ffff6498166 in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0<br />
#7  0x00007ffff648823b in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0<br />
#8  0x00007ffff7ecbbe6 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0<br />
#9  0x00007ffff7e2f276 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0<br />
#10 0x0000555555572074 in Framework::refresh (this=0x7fffffffdee0) at /home/master/src/pinetime/InfiniSim/main.cpp:609<br />
#11 0x000055555556f5d5 in main (argc=1, argv=0x7fffffffe0c8) at /home/master/src/pinetime/InfiniSim/main.cpp:1145</code></div></div><span style="font-family: Sans-serif;" class="mycode_font">Somehow the threads get mixed up???</span><br />
<br />
<span style="font-family: Sans-serif;" class="mycode_font">According to the logs, that function is called in thread 642677 only with values </span><span style="font-family: Courier New;" class="mycode_font">top_p = 0x7fffdc001958</span><span style="font-family: Sans-serif;" class="mycode_font">, </span><span style="font-family: Courier New;" class="mycode_font">0x7fffdc001c58</span><span style="font-family: Sans-serif;" class="mycode_font"> or </span><span style="font-family: Courier New;" class="mycode_font">0x7fffdc001d58</span><span style="font-family: Sans-serif;" class="mycode_font"> and each time it is called, </span><span style="font-family: Courier New;" class="mycode_font">lv_obj_get_parent(top_p) == NULL</span><span style="font-family: Sans-serif;" class="mycode_font"> (this is the value with which </span><span style="font-family: Courier New;" class="mycode_font">par</span><span style="font-family: Sans-serif;" class="mycode_font"> is initialised), meaning the function exits without entering the </span><span style="font-family: Courier New;" class="mycode_font">while(par != NULL)</span><span style="font-family: Sans-serif;" class="mycode_font"> loop, and never enters the </span><span style="font-family: Courier New;" class="mycode_font">lv_refr_obj</span><span style="font-family: Sans-serif;" class="mycode_font"> call where the SIGSEGV happens, which is the one in the loop.</span><br />
<br />
<span style="font-family: Sans-serif;" class="mycode_font">Still according to the logs, in thread 642669, all calls where </span><span style="font-family: Courier New;" class="mycode_font">top_p == 0x555556bb96c8</span><span style="font-family: Sans-serif;" class="mycode_font"> return, and the last call has another top_p value and has <span style="font-family: Courier New;" class="mycode_font">lv_obj_get_parent(top_p) == NULL</span>.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Developing on Mac (M3)]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19431</link>
			<pubDate>Sun, 22 Sep 2024 13:48:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28523">oksalahti</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19431</guid>
			<description><![CDATA[Hi,<br />
<br />
I just bought PineTime and started working on my own watch face.<br />
<br />
I managed to compile and run LVGL simulator for Mac with M3 (<a href="https://docs.lvgl.io/7.11/get-started/pc-simulator.html" target="_blank" rel="noopener" class="mycode_url">https://docs.lvgl.io/7.11/get-started/pc-simulator.html</a>)<br />
<br />
I tested my watch face with the LVGL simulator and it works as I would like it to work. Next step is to try to get my watch face running on the InfiniSim simulator.<br />
<br />
I managed to compile the InfiniSim simulator on Mac but it won't start. These are the error messages I get when trying to run the compiled simulator on mac.<br />
<br />
Has anyone managed to run the InfiniSim simulator on mac? Any ideas what's going on? I know I might be able to build InfiniTime project itself and upload my new code on my device but I'd feel much more safe if I can verify that the code runs on the simulator first.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>initial free_size = 40360<br />
info:  systemtask task started!<br />
info:  Last reset reason : Reset pin<br />
info:  [SpiNorFlash] Manufacturer : 0, Memory type : 0, memory density : 0<br />
info:  [SpiNorFlash] Wakeup<br />
info:  DISABLE<br />
info:  displayapp task started!<br />
info:  DISABLE<br />
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'nextEventMatchingMask should only be called from the Main Thread!'<br />
*** First throw call stack:<br />
(<br />
0  CoreFoundation                      0x0000000186420540 __exceptionPreprocess + 176<br />
1  libobjc.A.dylib                    0x0000000185f11eb4 objc_exception_throw + 60<br />
2  AppKit                              0x000000018a37487c -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3164<br />
3  SDL2                                0x000000010502d76c SDL2 + 87916<br />
4  SDL2                                0x000000010502da08 SDL2 + 88584<br />
5  SDL2                                0x00000001050aca00 SDL_DYNAPI_entry + 218324<br />
6  SDL2                                0x00000001050acb30 SDL_DYNAPI_entry + 218628<br />
7  infinisim                          0x0000000104706af8 sdl_event_handler + 44<br />
8  infinisim                          0x00000001046dd328 lv_task_exec + 96<br />
9  infinisim                          0x00000001046dd0a0 lv_task_handler + 536<br />
10  infinisim                          0x00000001046944c8 _ZN8Pinetime12Applications10DisplayApp7RefreshEv + 328<br />
11  infinisim                          0x000000010469433c _ZN8Pinetime12Applications10DisplayApp7ProcessEPv + 88<br />
12  infinisim                          0x000000010470b8bc _Z20sdl_function_wrapperPv + 44<br />
13  SDL2                                0x0000000105037e80 SDL2 + 130688<br />
14  SDL2                                0x000000010503aef8 SDL2 + 143096<br />
15  libsystem_pthread.dylib            0x00000001862ce034 _pthread_start + 136<br />
16  libsystem_pthread.dylib            0x00000001862c8e3c thread_start + 8<br />
)<br />
libc++abi: terminating due to uncaught exception of type NSException<br />
zsh: abort      ./infinisim</code></div></div>]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I just bought PineTime and started working on my own watch face.<br />
<br />
I managed to compile and run LVGL simulator for Mac with M3 (<a href="https://docs.lvgl.io/7.11/get-started/pc-simulator.html" target="_blank" rel="noopener" class="mycode_url">https://docs.lvgl.io/7.11/get-started/pc-simulator.html</a>)<br />
<br />
I tested my watch face with the LVGL simulator and it works as I would like it to work. Next step is to try to get my watch face running on the InfiniSim simulator.<br />
<br />
I managed to compile the InfiniSim simulator on Mac but it won't start. These are the error messages I get when trying to run the compiled simulator on mac.<br />
<br />
Has anyone managed to run the InfiniSim simulator on mac? Any ideas what's going on? I know I might be able to build InfiniTime project itself and upload my new code on my device but I'd feel much more safe if I can verify that the code runs on the simulator first.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>initial free_size = 40360<br />
info:  systemtask task started!<br />
info:  Last reset reason : Reset pin<br />
info:  [SpiNorFlash] Manufacturer : 0, Memory type : 0, memory density : 0<br />
info:  [SpiNorFlash] Wakeup<br />
info:  DISABLE<br />
info:  displayapp task started!<br />
info:  DISABLE<br />
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'nextEventMatchingMask should only be called from the Main Thread!'<br />
*** First throw call stack:<br />
(<br />
0  CoreFoundation                      0x0000000186420540 __exceptionPreprocess + 176<br />
1  libobjc.A.dylib                    0x0000000185f11eb4 objc_exception_throw + 60<br />
2  AppKit                              0x000000018a37487c -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3164<br />
3  SDL2                                0x000000010502d76c SDL2 + 87916<br />
4  SDL2                                0x000000010502da08 SDL2 + 88584<br />
5  SDL2                                0x00000001050aca00 SDL_DYNAPI_entry + 218324<br />
6  SDL2                                0x00000001050acb30 SDL_DYNAPI_entry + 218628<br />
7  infinisim                          0x0000000104706af8 sdl_event_handler + 44<br />
8  infinisim                          0x00000001046dd328 lv_task_exec + 96<br />
9  infinisim                          0x00000001046dd0a0 lv_task_handler + 536<br />
10  infinisim                          0x00000001046944c8 _ZN8Pinetime12Applications10DisplayApp7RefreshEv + 328<br />
11  infinisim                          0x000000010469433c _ZN8Pinetime12Applications10DisplayApp7ProcessEPv + 88<br />
12  infinisim                          0x000000010470b8bc _Z20sdl_function_wrapperPv + 44<br />
13  SDL2                                0x0000000105037e80 SDL2 + 130688<br />
14  SDL2                                0x000000010503aef8 SDL2 + 143096<br />
15  libsystem_pthread.dylib            0x00000001862ce034 _pthread_start + 136<br />
16  libsystem_pthread.dylib            0x00000001862c8e3c thread_start + 8<br />
)<br />
libc++abi: terminating due to uncaught exception of type NSException<br />
zsh: abort      ./infinisim</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pinetime - Kids with special needs]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19279</link>
			<pubDate>Wed, 12 Jun 2024 04:42:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28264">hidara</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19279</guid>
			<description><![CDATA[A friend of mine has a 4-year-old kid who is deaf and now that he's riding a bike they have to chase after him to get his attention. I have discovered that this is common in this particular special-needs community and I purchased 2x pinetimes to see if I could create an app that at the press of a button would make the other watch vibrate. Watches arrived today<br />
<br />
I'm pretty comfortable with Linux, Python and development in general but haven't used MicroPython that much.<br />
I would greatly appreciate any tips on this project and plan to share it on Github for other parents in the same situation<br />
<br />
<span style="font-weight: bold;" class="mycode_b">COMPLETE<br />
</span><br />
<ul class="mycode_list"><li>WaspOS is installed on both watches. I'm more comfortable with Python for app dev but can revert to Infinitime if there is reason<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">TODO </span>Tips are welcome for these (especially if something is/is not possible)<br />
<ul class="mycode_list"><li>Find some way to pair the two watches over Bluetooth LE. In waspOS I couldn't find a Bluetooth setting to connect the watch to another device but I have found that I can discover the watch with my phone. Ideally, I would have a settings menu in case one watch is damaged and I don't have to embed the connection details in the code but happy to hard code the connection for now<br />
</li>
<li>Find some way to trigger the vibration on a software button press or better still, have a background app that sends the Bluetooth message trigger on a double hardware button press would be perfect<br />
</li>
<li>Ensure that the devices connect automatically and I'm not sure what to do about battery management. Is there deep sleep on these?<br />
</li>
<li>A warning when the device goes out of range would be nice for parents<br />
</li>
</ul>
<br />
<br />
<br />
I'll start chipping away at these but any help would be great. Cheers]]></description>
			<content:encoded><![CDATA[A friend of mine has a 4-year-old kid who is deaf and now that he's riding a bike they have to chase after him to get his attention. I have discovered that this is common in this particular special-needs community and I purchased 2x pinetimes to see if I could create an app that at the press of a button would make the other watch vibrate. Watches arrived today<br />
<br />
I'm pretty comfortable with Linux, Python and development in general but haven't used MicroPython that much.<br />
I would greatly appreciate any tips on this project and plan to share it on Github for other parents in the same situation<br />
<br />
<span style="font-weight: bold;" class="mycode_b">COMPLETE<br />
</span><br />
<ul class="mycode_list"><li>WaspOS is installed on both watches. I'm more comfortable with Python for app dev but can revert to Infinitime if there is reason<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">TODO </span>Tips are welcome for these (especially if something is/is not possible)<br />
<ul class="mycode_list"><li>Find some way to pair the two watches over Bluetooth LE. In waspOS I couldn't find a Bluetooth setting to connect the watch to another device but I have found that I can discover the watch with my phone. Ideally, I would have a settings menu in case one watch is damaged and I don't have to embed the connection details in the code but happy to hard code the connection for now<br />
</li>
<li>Find some way to trigger the vibration on a software button press or better still, have a background app that sends the Bluetooth message trigger on a double hardware button press would be perfect<br />
</li>
<li>Ensure that the devices connect automatically and I'm not sure what to do about battery management. Is there deep sleep on these?<br />
</li>
<li>A warning when the device goes out of range would be nice for parents<br />
</li>
</ul>
<br />
<br />
<br />
I'll start chipping away at these but any help would be great. Cheers]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Dev/Prod Setup]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=19276</link>
			<pubDate>Sun, 09 Jun 2024 22:32:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=28257">Fady Anwar</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=19276</guid>
			<description><![CDATA[Hi,<br />
I was wondering if it would be a good idea to buy two watches, one that is for development (dev kit) and another that is for my use (sealed) as in being prod. Would this setup by any means guarantee that if I flash the prod one with a properly tested firmware from the dev watch then I won't brick the prod one? Your thoughts please, thank you!<br />
<br />
Regards,<br />
Fady]]></description>
			<content:encoded><![CDATA[Hi,<br />
I was wondering if it would be a good idea to buy two watches, one that is for development (dev kit) and another that is for my use (sealed) as in being prod. Would this setup by any means guarantee that if I flash the prod one with a properly tested firmware from the dev watch then I won't brick the prod one? Your thoughts please, thank you!<br />
<br />
Regards,<br />
Fady]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Infinitime Build problem]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=18807</link>
			<pubDate>Fri, 20 Oct 2023 15:31:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=27498">BlackDev</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=18807</guid>
			<description><![CDATA[Hi guys, <br />
<br />
I'm trying to build Infinitime project on my windows machine but with no success. I have been following the steps in:<br />
<br />
<a href="https://github.com/InfiniTimeOrg/InfiniTime/blob/main/doc/buildAndProgram.md" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/InfiniT...Program.md</a> <br />
<br />
I'm stuck in the last step, the make command. <br />
<br />
Cmake command:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Cmake -DARM_NONE_EABI_TOOLCHAIN_PATH="C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10" -DNRF5_SDK_PATH="C:/Users/blackdev/pinetime/nRF5_SDK_15.3.0_59ac345" -DCMAKE_BUILD_TYPE=Debug -DBUILD_DFU=1 -DBUILD_RESOURCES=1 -DTARGET_DEVICE=PINETIME -S . -B build</code></div></div><br />
Which results in adding the following files inside build folder<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>├───CMakeFiles<br />
│   ├───3.28.0-rc2<br />
│   │   ├───CompilerIdASM<br />
│   │   ├───CompilerIdC<br />
│   │   │   ├───Debug<br />
│   │   │   │   └───CompilerIdC.tlog<br />
│   │   │   └───tmp<br />
│   │   ├───CompilerIdCXX<br />
│   │   │   ├───Debug<br />
│   │   │   │   └───CompilerIdCXX.tlog<br />
│   │   │   └───tmp<br />
│   │   └───x64<br />
│   │       └───Debug<br />
│   │           └───VCTargetsPath.tlog<br />
│   ├───58e9d56eaa4cb413b76d7d838cbc8fb1<br />
│   ├───74be971449aa6aebb611e3cfdd9dd126<br />
│   ├───83f795d81ab7de042a55dc014fe330ec<br />
│   ├───CMakeScratch<br />
│   └───pkgRedirects<br />
└───src<br />
    ├───CMakeFiles<br />
    └───displayapp<br />
        └───fonts<br />
            └───CMakeFiles</code></div></div><br />
<br />
Then I enter the build folder and I try to use make command as described in the above link <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>make -j4 pinetime-app</code></div></div><br />
It doesn't work, it says:<br />
"make: *** No rule to make target 'pinetime-app'.  Stop."<br />
<br />
I also tried make -j4, but similar issue. <br />
<br />
Any hints and guidance would be greatly appreciated.<br />
<br />
Thanks]]></description>
			<content:encoded><![CDATA[Hi guys, <br />
<br />
I'm trying to build Infinitime project on my windows machine but with no success. I have been following the steps in:<br />
<br />
<a href="https://github.com/InfiniTimeOrg/InfiniTime/blob/main/doc/buildAndProgram.md" target="_blank" rel="noopener" class="mycode_url">https://github.com/InfiniTimeOrg/InfiniT...Program.md</a> <br />
<br />
I'm stuck in the last step, the make command. <br />
<br />
Cmake command:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Cmake -DARM_NONE_EABI_TOOLCHAIN_PATH="C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10" -DNRF5_SDK_PATH="C:/Users/blackdev/pinetime/nRF5_SDK_15.3.0_59ac345" -DCMAKE_BUILD_TYPE=Debug -DBUILD_DFU=1 -DBUILD_RESOURCES=1 -DTARGET_DEVICE=PINETIME -S . -B build</code></div></div><br />
Which results in adding the following files inside build folder<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>├───CMakeFiles<br />
│   ├───3.28.0-rc2<br />
│   │   ├───CompilerIdASM<br />
│   │   ├───CompilerIdC<br />
│   │   │   ├───Debug<br />
│   │   │   │   └───CompilerIdC.tlog<br />
│   │   │   └───tmp<br />
│   │   ├───CompilerIdCXX<br />
│   │   │   ├───Debug<br />
│   │   │   │   └───CompilerIdCXX.tlog<br />
│   │   │   └───tmp<br />
│   │   └───x64<br />
│   │       └───Debug<br />
│   │           └───VCTargetsPath.tlog<br />
│   ├───58e9d56eaa4cb413b76d7d838cbc8fb1<br />
│   ├───74be971449aa6aebb611e3cfdd9dd126<br />
│   ├───83f795d81ab7de042a55dc014fe330ec<br />
│   ├───CMakeScratch<br />
│   └───pkgRedirects<br />
└───src<br />
    ├───CMakeFiles<br />
    └───displayapp<br />
        └───fonts<br />
            └───CMakeFiles</code></div></div><br />
<br />
Then I enter the build folder and I try to use make command as described in the above link <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>make -j4 pinetime-app</code></div></div><br />
It doesn't work, it says:<br />
"make: *** No rule to make target 'pinetime-app'.  Stop."<br />
<br />
I also tried make -j4, but similar issue. <br />
<br />
Any hints and guidance would be greatly appreciated.<br />
<br />
Thanks]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Schematics for components not on the main board]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=18733</link>
			<pubDate>Fri, 22 Sep 2023 14:24:39 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=27410">ado</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=18733</guid>
			<description><![CDATA[Hello, I've been looking at the PineTime schematics, and I don't see any documentation on what is connected to the other ends of the various connectors on the main board. Is there some additional documentation about those components? For example, I'm curious on what is attached to the KEY connector - I can't quite tell from the main board schematic what exactly would go on the other end.]]></description>
			<content:encoded><![CDATA[Hello, I've been looking at the PineTime schematics, and I don't see any documentation on what is connected to the other ends of the various connectors on the main board. Is there some additional documentation about those components? For example, I'm curious on what is attached to the KEY connector - I can't quite tell from the main board schematic what exactly would go on the other end.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Is Dev kit still a must for application programming in 2023? thx]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=18721</link>
			<pubDate>Tue, 19 Sep 2023 04:10:34 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=27394">ccchan234</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=18721</guid>
			<description><![CDATA[hi,<br />
<br />
1. just ordered a sealed version as i saw people on youtube (likely the leader from wasp-os) could still use bluetooth to flash OS, flash software to pinetime.<br />
<br />
2. this post from lwn also claims that unless doing very low level development, otherwise it's not necessary:<br />
<span style="font-size: 1pt;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">PINE64 does sell a </span></span><a href="https://pine64.com/product/pinetime-dev-kit/" target="_blank" rel="noopener" class="mycode_url"><span style="color: #8080ff;" class="mycode_color"><span style="font-size: 1pt;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">developer kit</span></span></span></a><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">, which has the same hardware as the PineTime but is not sealed, allowing access to pins for resetting and reflashing the watch. Developers who want to work on the bootloader will probably want a developer kit, but, because of the </span></span>watchdog, it should not be necessary for other development.<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size"> The developer kit is currently out of stock, but it appears that this is temporary. It is also possible to break the seal and open the watch, but there is a risk of damaging the hardware.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">3. i knew sometimes if the watch freezes, having the kit could instantly reboot it and it is more reasonable than wait till it drain, but the kit is semi...either you drill a hole, solder some wires and cover up the watch,</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">OR it would be one that easily tear away. so, in addition to money (which i could afford next month), there still a lot of DIY to do.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">So, i just write some simple programs, esp with help of gpt4 for application. if it freezed once/twice per month, i am ok to wait till it drain.</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">then can i avoid the dev kit? avoid the soldering and drilling as i dont have these DIY tools myself.</span></span><br />
<br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">thanks</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">ref:</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size"><a href="https://lwn.net/Articles/941796/" target="_blank" rel="noopener" class="mycode_url">https://lwn.net/Articles/941796/</a></span></span>]]></description>
			<content:encoded><![CDATA[hi,<br />
<br />
1. just ordered a sealed version as i saw people on youtube (likely the leader from wasp-os) could still use bluetooth to flash OS, flash software to pinetime.<br />
<br />
2. this post from lwn also claims that unless doing very low level development, otherwise it's not necessary:<br />
<span style="font-size: 1pt;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">PINE64 does sell a </span></span><a href="https://pine64.com/product/pinetime-dev-kit/" target="_blank" rel="noopener" class="mycode_url"><span style="color: #8080ff;" class="mycode_color"><span style="font-size: 1pt;" class="mycode_size"><span style="font-family: Times New Roman;" class="mycode_font">developer kit</span></span></span></a><span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">, which has the same hardware as the PineTime but is not sealed, allowing access to pins for resetting and reflashing the watch. Developers who want to work on the bootloader will probably want a developer kit, but, because of the </span></span>watchdog, it should not be necessary for other development.<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size"> The developer kit is currently out of stock, but it appears that this is temporary. It is also possible to break the seal and open the watch, but there is a risk of damaging the hardware.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">3. i knew sometimes if the watch freezes, having the kit could instantly reboot it and it is more reasonable than wait till it drain, but the kit is semi...either you drill a hole, solder some wires and cover up the watch,</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">OR it would be one that easily tear away. so, in addition to money (which i could afford next month), there still a lot of DIY to do.</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">So, i just write some simple programs, esp with help of gpt4 for application. if it freezed once/twice per month, i am ok to wait till it drain.</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">then can i avoid the dev kit? avoid the soldering and drilling as i dont have these DIY tools myself.</span></span><br />
<br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">thanks</span></span><br />
<br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size">ref:</span></span><br />
<span style="font-family: Times New Roman;" class="mycode_font"><span style="font-size: 1pt;" class="mycode_size"><a href="https://lwn.net/Articles/941796/" target="_blank" rel="noopener" class="mycode_url">https://lwn.net/Articles/941796/</a></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bluetooth BLE-MIDI-controller app for PineTime / InfiniTime]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=18625</link>
			<pubDate>Sun, 20 Aug 2023 11:17:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=26694">Luno</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=18625</guid>
			<description><![CDATA[Hi there,<br />
<br />
I've made a BLE-MIDI-controller app for PineTime, which can send MIDI-data over BLE to music synthesizers:<br />
<a href="https://codeberg.org/Luno/InfiniTime_ble-midi" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Luno/InfiniTime_ble-midi</a>]]></description>
			<content:encoded><![CDATA[Hi there,<br />
<br />
I've made a BLE-MIDI-controller app for PineTime, which can send MIDI-data over BLE to music synthesizers:<br />
<a href="https://codeberg.org/Luno/InfiniTime_ble-midi" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Luno/InfiniTime_ble-midi</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python programme for a vibration signal from Raspberry Pi 4 via bluetooth connection]]></title>
			<link>https://forum.pine64.org/showthread.php?tid=18293</link>
			<pubDate>Thu, 01 Jun 2023 07:33:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.pine64.org/member.php?action=profile&uid=26911">Tria91</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.pine64.org/showthread.php?tid=18293</guid>
			<description><![CDATA[Hi,<br />
please, I need some help to make a vibration signal, if possible with adjustable vibration-length, out from a Python programme from a Raspberry Pi 4 via bluetooth connection.<br />
<br />
Best regards,<br />
Gerald]]></description>
			<content:encoded><![CDATA[Hi,<br />
please, I need some help to make a vibration signal, if possible with adjustable vibration-length, out from a Python programme from a Raspberry Pi 4 via bluetooth connection.<br />
<br />
Best regards,<br />
Gerald]]></content:encoded>
		</item>
	</channel>
</rss>