1
0
Fork 0

Compare commits

...

10 commits

Author SHA1 Message Date
Francesco Gazzetta
bf07f0cf55 tools/nix: fix wasptool
Fixes "ImportError: cannot import name GLib, introspection typelib not found"

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:26:53 +01:00
Francesco Gazzetta
6e1c422ff9 ci: update more github actions
Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:26:16 +01:00
Francesco Gazzetta
faa18b7129 tools/pynus: Update to latest version
Includes NixOS fix

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:25:38 +01:00
Francesco Gazzetta
6ca5d75ffa Add some missing files to make clean
Mitigates #506. Now a `make clean && make` will update any modified app.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-30 09:25:00 +01:00
Francesco Gazzetta
10692602f5 CI: update upload-artifact
https://github.blog/changelog/2024-02-13-deprecation-notice-v1-and-v2-of-the-artifact-actions/

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-09-25 19:26:45 +01:00
Gary Myers
24dcb62fdb
docs: fix simulator main.py path (#482)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-07 14:48:18 +00:00
Gary Myers
7d156cdc05
docs: Document installation via Gadgetbridge (#480)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-05 20:34:56 +00:00
Gary Myers
ce1a2634f0
docs: document how to save RAM by disabling apps (#471)
Signed-off-by: GaryM0101 <gary@geekslounge.com>
2024-08-05 20:34:36 +00:00
Francesco Gazzetta
fbf00957dd Fix build up to GCC 13
The errors cannot be disabled individually because the
-Wno-error=some-gcc13-error flags are not recognized by older compilers.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-06-28 09:37:46 +01:00
Francesco Gazzetta
1798bc6eea bma42x-upy: update submodule
The remote of its submodule disappeared. Update it to a fork under
the wasp-os organization.

Signed-off-by: Francesco Gazzetta <fgaz@fgaz.me>
2024-06-28 09:30:14 +01:00
8 changed files with 78 additions and 38 deletions

View file

@ -13,11 +13,11 @@ jobs:
steps: steps:
- name: Checkout files - name: Checkout files
id: checkout-files id: checkout-files
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Check the cached arm-none-eabi-gcc compiler - name: Check the cached arm-none-eabi-gcc compiler
id: cache-toolchain id: cache-toolchain
uses: actions/cache@v2 uses: actions/cache@v4
env: env:
cache-name: cache-toolchain-10-2020-q4 cache-name: cache-toolchain-10-2020-q4
with: with:
@ -68,35 +68,35 @@ jobs:
- name: Upload full binary distribution - name: Upload full binary distribution
id: upload-binaries id: upload-binaries
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: wasp-os-${{ github.sha }} name: wasp-os-${{ github.sha }}
path: wasp-os-${{ github.sha }}.tar.gz path: wasp-os-${{ github.sha }}.tar.gz
- name: Upload pinetime binaries - name: Upload pinetime binaries
id: upload-pinetime id: upload-pinetime
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: pinetime-${{ github.sha }} name: pinetime-${{ github.sha }}
path: build-pinetime path: build-pinetime
- name: Upload Colmi P8 binaries - name: Upload Colmi P8 binaries
id: upload-p8 id: upload-p8
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: p8-${{ github.sha }} name: p8-${{ github.sha }}
path: build-p8 path: build-p8
- name: Upload Senbono K9 binaries - name: Upload Senbono K9 binaries
id: upload-k9 id: upload-k9
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: k9-${{ github.sha }} name: k9-${{ github.sha }}
path: build-k9 path: build-k9
- name: Upload extra apps binaries - name: Upload extra apps binaries
id: upload-apps id: upload-apps
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v4
with: with:
name: apps-${{ github.sha }} name: apps-${{ github.sha }}
path: apps/*.mpy path: apps/*.mpy

View file

@ -13,11 +13,11 @@ jobs:
steps: steps:
- name: Checkout files - name: Checkout files
id: checkout-files id: checkout-files
uses: actions/checkout@v2 uses: actions/checkout@v4
- name: Check the cached python downloads - name: Check the cached python downloads
id: cache-modules id: cache-modules
uses: actions/cache@v2 uses: actions/cache@v4
env: env:
cache-name: cache-toolchain cache-name: cache-toolchain
with: with:

View file

@ -23,10 +23,13 @@ clean :
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \ reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
micropython/mpy-cross/build \ micropython/mpy-cross/build \
micropython/ports/nrf/build-$(BOARD)-s132 \ micropython/ports/nrf/build-$(BOARD)-s132 \
apps/*.mpy \
build-$(BOARD) \
wasp/boards/$(BOARD)/watch.py \ wasp/boards/$(BOARD)/watch.py \
wasp/apps/user \ wasp/apps/user \
wasp/boards/manifest_user_apps.py \ wasp/boards/manifest_user_apps.py \
wasp/appregistry.py wasp/appregistry.py
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
# Avoid a recursive update... it grabs far too much # Avoid a recursive update... it grabs far too much
submodules : submodules :
@ -62,7 +65,13 @@ wasp/boards/$(BOARD_SAFE)/watch.py : wasp/boards/$(BOARD_SAFE)/watch.py.in
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false) || ($(RM) wasp/boards/$(BOARD)/watch.py; false)
micropython/mpy-cross/mpy-cross: micropython/mpy-cross/mpy-cross:
$(MAKE) -C micropython/mpy-cross $(MAKE) -C micropython/mpy-cross \
CWARN="-Wall -Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c $(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
@ -70,7 +79,13 @@ micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$
BOARD=$(BOARD) SD=s132 \ BOARD=$(BOARD) SD=s132 \
MICROPY_VFS_LFS2=1 \ MICROPY_VFS_LFS2=1 \
FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \ FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \
USER_C_MODULES=$(CURDIR)/wasp/modules USER_C_MODULES=$(CURDIR)/wasp/modules \
COPT="-Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
$(PYTHON) -m nordicsemi dfu genpkg \ $(PYTHON) -m nordicsemi dfu genpkg \
--dev-type 0x0052 \ --dev-type 0x0052 \
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \ --application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \

View file

@ -254,7 +254,7 @@ To launch the simulator:
sh$ make sim sh$ make sim
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\ PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \\
python3 -i wasp/main.py python3 -i wasp/boards/simulator/main.py
MOTOR: set on MOTOR: set on
BACKLIGHT: 2 BACKLIGHT: 2
Watch is running, use Ctrl-C to stop Watch is running, use Ctrl-C to stop
@ -280,8 +280,8 @@ by swiping or using the Arrow keys to bring up the launcher and then clicking
on your application. on your application.
The application can also be registered automatically when you load the The application can also be registered automatically when you load the
simulator if you add it to ``wasp/main.py``. Try adding lines 5 and 6 from simulator if you add it to ``wasp/boards/simulator/main.py``. Try adding lines
the above example into this file (between ``import wasp`` and 5 and 6 from the above example into this file (between ``import wasp`` and
``wasp.system.run()``). ``wasp.system.run()``).
The simulator accepts gestures such as up/down and left/right swipes but the The simulator accepts gestures such as up/down and left/right swipes but the

View file

@ -243,9 +243,9 @@ screen, a step counter and a heart rate sensor.
wasp-os can be installed directly from the factory default operating wasp-os can be installed directly from the factory default operating
system using an over-the-air update with no tools or disassembly system using an over-the-air update with no tools or disassembly
required. nRF Connect for Android can be used to install both the required. Gadgetbridge for Android can be used to install both the
:ref:`wasp-bootloader<Bootloader nRF Connect>` and the :ref:`wasp-bootloader<Bootloader Gadgetbridge>` and the
:ref:`main OS image<Main OS nRF Connect>`. :ref:`main OS image<Main OS Gadgetbridge>`.
.. note:: .. note::
@ -330,12 +330,12 @@ DaFlasher for Android can be used to install both the
Installing wasp-bootloader Installing wasp-bootloader
-------------------------- --------------------------
.. _Bootloader nRF Connect: .. _Bootloader Gadgetbridge:
nRF Connect for Android Gadgetbridge for Android
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
For Pine64 PineTime devices running Infinitime then nRF Connect for Android For Pine64 PineTime devices running Infinitime then Gadgetbridge for Android
can be used to install wasp-bootloader: can be used to install wasp-bootloader:
* Ensure the watch is fully charged before attempting to install the * Ensure the watch is fully charged before attempting to install the
@ -343,12 +343,14 @@ can be used to install wasp-bootloader:
sealed devices. sealed devices.
* Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to * Copy ``reloader-mcuboot.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download your Android device and download
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_ `Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
for Android if you do not already have it. for Android if you do not already have it.
* Wake the device so that Infinitime is showing a watch face. * Wake the device so that Infinitime is showing a watch face.
* Connect to the *Infinitime* device usnig nRF Connect, click the DFU button * Connect to the *Infinitime* device usnig Gadgetbridge, tap on the "+" button on the
and send ``reloader-mcuboot.zip`` to the device. bottom right of the screen to add a new device, *Infinitime* should be detected.
* When the progress meter reaches 100% the nRF Connect will disconnect * Tap on it and Gadgdetbridge will pair and connect to your device. Use the file browser
application and find and send ``reloader-mcuboot.zip`` to the device.
* When the progress meter reaches 100% Gadgetbridge will disconnect
and the watch will reboot. and the watch will reboot.
* The watch will boot the reloader application which draws a small blue * The watch will boot the reloader application which draws a small blue
pine cone in the centre of the screen. The pine cone acts a progress pine cone in the centre of the screen. The pine cone acts a progress
@ -366,9 +368,11 @@ can be used to install wasp-bootloader:
.. note:: .. note::
If you want to restore the PineTime factory firmware then you can If you want to restore the PineTime factory firmware then you can
use nRF Connect to do this. Perform a long press reset and then use Gadgetbridge to do this. Perform a long press reset and then
use nRF Connect to send ``reloader-factory.zip`` to the *PineDFU* use Gadgetbridge to send ``reloader-factory.zip`` to the *PineDFU*
device. device. GadgetBridge may list *PINE DFU* as an unsupported device.
See the work around at the end of
:ref:`main OS image<Main OS Gadgetbridge>`.
.. _Bootloader DaFlasher: .. _Bootloader DaFlasher:
@ -465,23 +469,35 @@ logo and wait for a OTA update.
Installing wasp-os Installing wasp-os
------------------ ------------------
.. _Main OS nRF Connect: .. _Main OS Gadgetbridge:
nRF Connect for Android Gadgetbridge for Android
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
To install the main firmware using nRF Connect for Android: To install the main firmware using Gadgetbridge for Android:
* Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to * Copy ``micropython.zip`` (see :ref:`Building wasp-os from source`) to
your Android device and download your Android device and download
`nRF Connect <https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp>`_ `Gadgetbridge <https://f-droid.org/en/packages/nodomain.freeyourgadget.gadgetbridge/>`_
for Android if you do not already have it. for Android if you do not already have it.
* Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`. * Ensure the watch is running in :ref:`OTA update mode<OTA update mode>`.
* Connect to the device (e.g. *PineDFU* if you have a PineTime) using * Connect to the device (e.g. *PineDFU* if you have a PineTime) using
nRFConnect, click the DFU button and send ``micropython.zip`` to the device. Gadgetbridge, use the file browser application and send ``micropython.zip`` to the
device.
* When the upload is complete the watch will reboot and launch the digital * When the upload is complete the watch will reboot and launch the digital
clock application. clock application.
.. note::
GadgetBridge may list PINE DFU as an unsupported device. This prevents users from
sending the ``micropython.zip`` file to the device. Do the following to work around
this: In GadgetBridge, go to discovery and pairing options and allow unsupported
devices.
The Pinetime will show up as an unsupported device. Long-press it and select Add
as a test device. A list of devices will show up. Scroll down to Pinetime and select
it. The device will be added and you then can upload the ``micropython.zip`` file.
.. _Main OS DaFlasher: .. _Main OS DaFlasher:
DaFlasher for Android DaFlasher for Android
@ -584,8 +600,14 @@ A default version of ``main.py`` is installed automatically when wasp-os initial
formats the external flash as a file system. formats the external flash as a file system.
Most problems with normal mode operation occur either because ``main.py`` is Most problems with normal mode operation occur either because ``main.py`` is
missing, out-of-date or corrupt. These issues most commonly result in an missing, out-of-date or corrupt, or because too many applications are being started
entirely black screen when running the watch is running in normal mode. by default, resulting in the system running out of RAM.
Out of memory problems are best addressed by reducing the number of applications you
have set to automatically load (auto_load in wasp.toml). If you are developing your
own application, it is best that you load the minimal set of applications to have
the maximum possible amount of available RAM and minimum fragmentation. For example,
only autoloading the software app will get you the maximum amount of RAM.
.. note:: .. note::

View file

@ -6,6 +6,9 @@ let
ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux; ifLinux = pkgs.lib.optionals pkgs.stdenv.isLinux;
in pkgs.mkShell { in pkgs.mkShell {
buildInputs = ifLinux [
pkgs.gobject-introspection
];
nativeBuildInputs = [ nativeBuildInputs = [
(pkgs.python3.withPackages (pp: with pp; [ (pkgs.python3.withPackages (pp: with pp; [
cbor cbor

@ -1 +1 @@
Subproject commit 5572b01b26e04c7f8c79e8407f4d202e7258bf6b Subproject commit 0e95be2ed0ddc21ea0c833fe0497e175a132524c

@ -1 +1 @@
Subproject commit b968b2530440afae8b555613e89b1240afcf4da2 Subproject commit 2c41c396adc80ee0c09f7cc7263f162c0f508d59