Wire the UART pins to the CH341A:
TX = SDA
RX = SCL
Power on camera and immediately start snander within a few milliseconds:
sudo ./snander -i
| for REMOTE_BRANCH in $(git branch -r | grep origin); do echo "$REMOTE_BRANCH"; git log $REMOTE_BRANCH --format='%ci|%an|%s' | grep -F -x -v -f ../"${PWD##*/}".csv >> ../"${PWD##*/}".csv; done |
| Basic Manual for DaFit Fitness Tracker firmware update protocol, works for nearly any nRF52832 tracker from Company DaFit | |
| The minimum size of update file is 0x10000(can be filled with garbage to get to size) and the maximum size is 0x2F000 | |
| the update will first get stored onto the external flash at position 0x3D1000 by the stock firmware(not by the bootloader) | |
| the size of the update will get stored at 0x3D0000 on external flash with 4 bytes uint32_t | |
| when bootloader gets activated it will copy the update from external flash to 0x23000 of the nRF52 internal flash. | |
| Connect to device, |
| List with Compatible devices: | |
| Look under About on the watch for the device Id. | |
| looks something like this: | |
| MOY-TEH5-1.7.7 | |
| the middle section is the interesting part, if that is in this list here | |
| it has the compatible bootloader and the same pinout as pinetime for Display and External Flash |
| <?php | |
| class 💩💩💩💩 | |
| { | |
| function 💩💩💩($😎, $🐯) | |
| { | |
| return $😎 + $🐯; | |
| } | |
| } | |
| $🐔 = 3; |
| $ sudo ubuntu-drivers autoinstall | |
| $ lspci | |
| 00:00.0 Host bridge: Intel Corporation Device 4601 (rev 04) | |
| 00:02.0 VGA compatible controller: Intel Corporation Device 46a8 (rev 0c) | |
| 00:04.0 Signal processing controller: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant (rev 04) | |
| 00:06.0 PCI bridge: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 (rev 04) | |
| 00:06.2 PCI bridge: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #2 (rev 04) | |
| 00:08.0 System peripheral: Intel Corporation 12th Gen Core Processor Gaussian & Neural Accelerator (rev 04) | |
| 00:0d.0 USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller (rev 04) | |
| 00:14.0 USB controller: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller (rev 01) |
| #!/bin/bash | |
| set -euo pipefail | |
| IFS=$'\n\t' | |
| # Ubuntu 20/22 dev Server | |
| # Run like (without sudo) - bash install_lamp.sh | |
| # Script should auto terminate on errors | |
| export DEBIAN_FRONTEND=noninteractive |
| /** | |
| * This is too show the use of waiting for a jquery selector in the browser | |
| * using promises. Much like how webdriverio works from outside the browser. | |
| * | |
| * Tested with jQuery v1.11.3 and chrome Version 48.0.* (64-bit) | |
| **/ | |
| /** | |
| * Wait for a jquery css selector |
| #!/usr/bin/env python | |
| #fileencoding: utf-8 | |
| #Author: Stain & Liu <[email protected] & [email protected]> | |
| #Created : 17 Oct 2010 11:19:58 AM CST | |
| #Modified : 15 Sep 2017 10:12:42 PM CST | |
| import os | |
| import sys | |
| import mmap | |
| import json |
| //return an array of objects according to key, value, or key and value matching | |
| function getObjects(obj, key, val) { | |
| var objects = []; | |
| for (var i in obj) { | |
| if (!obj.hasOwnProperty(i)) continue; | |
| if (typeof obj[i] == 'object') { | |
| objects = objects.concat(getObjects(obj[i], key, val)); | |
| } else | |
| //if key matches and value matches or if key matches and value is not passed (eliminating the case where key matches but passed value does not) | |
| if (i == key && obj[i] == val || i == key && val == '') { // |