Giter Club home page Giter Club logo

Comments (126)

JF002 avatar JF002 commented on August 15, 2024 3

i have worked with DFU and NRF52, it should be possible to create a new DFU package that contains the correct bootloader.

@maidenone The tool I was talking about is wasp-reloader. You might want to have a look at it before you start something from scratch :)
And thanks in advance for your futur PR for the support of the P8 in InfiniTime :)

Tnx guys. As I understand, main problem here is memory map difference. And THAN maybe pinout/accelerometer difference. I will look into this and write back if I have meaningful result.

@nextfullstorm It's not only a memory map issue: the bootloader philosophy is completely different. ATCWatch is based on the NRF softdevice (BLE stack) and NRF bootloader. The BLE stack is shared accross the bootloader and the application (atcwatch). It provides many advantages, but it forces in a way all application firmware to use the NRF Softdevice as BLE stack. And the softdevice and the bootloader are both closed-source.

The bootloader implemented by InfiniTime and other compatible firmwares is a much more simple bootloader that does not provide any BLE stack. It allows the developers to choose the BLE stack they want for their project (or no ble at all). It is then possible to implement a fully open-source application: the bootloader is based on MCUBoot and you can use NimBLE as ble stack. They are both open source.

The way the NRFBootloader and softdevice are designed make the cohabition really difficult. The best solution for this issue we've found so far is to implement a "swticher" tool that would use OTA to overwrite the bootloader from MCUboot to NRF and vice-versa. Danielt began the project (wasp-reloader) but I haven't had the time to check it out.

from infinitime.

ildar avatar ildar commented on August 15, 2024 2

Allright.
Just published the final version of InfiniTime fw for P8 watch. Files are in the post above ↑

  1. InfiniTime+BL-0.15.0-P8.hex : Bootloader+InfiniTime, for flashing of opened watch (like this)
  2. IT_recovery-loader+BL-0.15.0.hex : Bootloader + recovery installer, for flashing of opened watch
  3. P8-mcuboot-app-dfu-0.15.0.zip : DFU package for installing from recovery
  4. reloader-factory.zip is for OTA installation from SoftDevice-based bootloaders (like WASP bootloader)

The FW is tested, working fine. If not, plz contact me at Matrix and Gitter channels.

from infinitime.

ildar avatar ildar commented on August 15, 2024 2

from infinitime.

ildar avatar ildar commented on August 15, 2024 2

from infinitime.

nextfullstorm avatar nextfullstorm commented on August 15, 2024 1

Tnx guys. As I understand, main problem here is memory map difference. And THAN maybe pinout/accelerometer difference. I will look into this and write back if I have meaningful result.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024 1

@endian-albin
see my posts here: #53

i will set up integration testing nodes for P8 and Pinetime. they will be available online through a web interface. i can also provide direct ssh access if asked ^_^

from infinitime.

JF002 avatar JF002 commented on August 15, 2024 1

Thanks for working on a port of InfiniTime on the P8.
To avoid confusion, we'll need to be very clear about the fact that the bootloader and OTA from InfiniTime are not compatible with the original FW running on the P8 and with Wasp-OS. I don't want people to brick their device while trying InfiniTime :)

from infinitime.

maidenone avatar maidenone commented on August 15, 2024 1

just to clarify my plan:
The test will

  1. flash bootloader + firmware/app or only bootloader if supported
  2. the test framework will then try to make the bootloader enter dfu mode, either through pi hardware (button press?) or through "buttonless dfu" if available.
  3. the test framework will then make a ble dfu upgrade request through RPI BLE (or NRF BLE dongle).
  4. the test framework will then wait / reboot the pinetime and verify that the update succeeded (RTT output? debug trace? pin toggle?)

this will make it faster / easier to test / develop solutions for moving from one bootloader to another, verify normal dfu upgrade packages or creating tests that repeatedly can cause some hard to trigger upgrade bugs.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024 1

@maidenone, if you want to support the Hypnos project as well
Of cause i want to support all the projects i can, I will allow contributions for test files as well, but this is a big security risk, and i have put any time into creating an isolated environment... so i will simply invite developers to the test file git repo (seperated from the framework git repo).

Once i get it up and running, creating custom test files for other projects should be very simple.

RTT is not in the default "production" firmware.
This is as it should, hence my comment in my forum post on "requiring test debug" has its drawbacks.

from infinitime.

ildar avatar ildar commented on August 15, 2024 1

from infinitime.

JF002 avatar JF002 commented on August 15, 2024

Hi!
I'm not working on a P8 port for now, because I do not have one and I doubt I would have the time to maintain both of them.
You're right, there are very few differences between the PineTime and the P8, so the port should not be too complicated. I'm open to pull requests if someone wants to implement the support for the P8 :)

Please note that the DFU upgrade from ATCWatch and InfiniTime are not compatible. ATCWatch and InfiniTime do not use the same bootloader and memory map, which means that you can DFU from ATCWatch to InfiniTime or from InfiniTime to ATCWatch.
There is a project to build a tool that would allow that but I don't think it's ready to be used for now.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

i have worked with DFU and NRF52, it should be possible to create a new DFU package that contains the correct bootloader.

from infinitime.

hrmckay avatar hrmckay commented on August 15, 2024

If you look at issue # 69 for the wasp-os support for the Pinetime at https://github.com/daniel-thompson/wasp-os/issues you will see what had to be changed to get things working for that operating system.

Hugh

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

from infinitime.

nextfullstorm avatar nextfullstorm commented on August 15, 2024

where can i buy a p8?

On aliexpress for sure. I got mine there. IDK if I can post direct links.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

well i ordered 2, will se when i get them.
do not know when i will get the time, but i intend to look into it.

from infinitime.

nextfullstorm avatar nextfullstorm commented on August 15, 2024

@JF002 Thanks again. This is very useful info for noobs like me. Maybe you should include it somehow in main README.

from infinitime.

tt1pjm avatar tt1pjm commented on August 15, 2024

I created a fork and have flashed pinetime-app.out to a P8 that seems to be functional. Only a few pins needed to be modified. I've not yet managed to get MCUBoot bootloader working yet for the P8. If anyone makes any progress on that please share.

from infinitime.

endian-albin avatar endian-albin commented on August 15, 2024

@tt1pjm: PineTime Hypnos has a P8 port with mcuboot enabled, but I don't know if DFU works on it since I don't have access to a P8 device. Please note that the slot1 partition is located on the external SPI flash. I have no idea if that is right or wrong on the P8. If you put slot1 on the the internal flash, then the Hypnos application will run out of space. Anyway, binaries are available in the Github Actions history.

from infinitime.

tt1pjm avatar tt1pjm commented on August 15, 2024

@endian-albin: Good work on building support for P8 in Hypnos! I managed to get MCUboot working on my P8, take a look at my fork of Lup's pinetime-rust-mynewt for details. I don't know if all P8s have the same jedec manufacturer for SPIflash as mine but it was different to Pinetime and needed correcting for MCUBoot to work. Looks as though you've got the same jedec manufacturer for P8 as Pinetime in Hypnos so may need updating if other P8 owners validate they have the same jedec manufacturer that I've identified.

from infinitime.

endian-albin avatar endian-albin commented on August 15, 2024

The port was contributed by @MirkoCovizzi and as I said, I haven't been able to test it myself. From what you say, it sounds like we need to make modifications, but I'll leave that to someone who can actually try it out. By the way, do you happen to know where one can get a P8 with SWD pin access?

from infinitime.

tt1pjm avatar tt1pjm commented on August 15, 2024

I'll try and test the change and let you know how it goes over at Hypnos. P8s come closed and just need back cover removing with a blade to access the SWD pins. They're quite common and can be found searching for Colmi P8.

from infinitime.

endian-albin avatar endian-albin commented on August 15, 2024

Thanks @tt1pjm!

from infinitime.

endian-albin avatar endian-albin commented on August 15, 2024

@maidenone, that sounds awesome. I'm looking forward to try it out when ready.

from infinitime.

jones139 avatar jones139 commented on August 15, 2024

I have just ordered a second P8 in anticipation of having to open up the first when I brick it 😀.

I'll give it a try tonight.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

Do you have any good linux commandline tools to do make DFU upgrade requests?

I would like to create "fw upgrade" tests and add them to my integration test framework,
see: https://forum.pine64.org/showthread.php?tid=11711

In the past I have used https://github.com/peplin/pygatt to automate testing and do stress testing on custom Bluetooth services I have created.

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

Do you have any good linux commandline tools to do make DFU upgrade requests?

@maidenone use adafruit-nrfutil pip package

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

looks like the adafruit lib only supports serial dfu, not ble dfu.

this looks right: https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/nordicsemi/dfu/dfu_transport_ble.py

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

@maidenone

looks like the adafruit lib only supports serial dfu, not ble dfu.

You are absolutely correct. When I replied to you it was getting pretty late and I thought you just want to make "DFU distribution packets". For which that library works well. I used it to quickly generate the .zip needed for Gadgetbridge or nRF Connect.

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

What you describe sounds very similar with what I thought of doing, but the primary difference with yours being that I don't really wish to write a custom UI/service, the status and everything will hopefully be available as build artifacts or in CI log. I was personally planning on creating a CI pipeline for TeamCity that flashes the firmware, grabs the ARM Semihosting logs, takes a few pics with a webcam and then posts the build status.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

shhh, ARM Semihosting, isnt that a bad word?
I have had BLE timing issues with the softdevice when using semihosting
Screenshot from 2020-10-05 16-08-11

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

shhh, ARM Semihosting, isnt that a bad word?

It works if you don't use it in timing-critical situations, plus it's not proprietary and it's nicely supported by OpenOCD. It's more universal than RTT.

The speed of ARM Semihosting also depends on the programmer's speed, the defaults are often silly. If you use openocd, give it adapter speed 32000 and divide the time it takes to flash by ten.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

if you want to dig deeper see this: https://blog.japaric.io/itm/
summery: "Never, ever use semihosting to log data. Unless you can afford delays in the order of tens of milliseconds in your application."

It was with strong dislike that i went from the light fields of OpenOCD into the dark plains of JlinkRTT, now i am afraid i will never see the light again...

that said, i do a fair bit of time critical things, and being able to dump out a metric crap ton of debug data without missing realtime constraints is a true blessing.

Also, RTT in OpenOCD might happen any year now: http://openocd.zylin.com/#/c/4055/

Back to topic? sorry for derailing this thread.

from infinitime.

maidenone avatar maidenone commented on August 15, 2024

What you describe sounds very similar with what I thought of doing, but the primary difference with yours being that I don't really wish to write a custom UI/service.

you might be able to use the commandline interface?

python3 runOnTestNode.py dfuUpgradeTest node1 test.hex

The drawback is that i currently do not have any "job id", only "execution datetime", and if the node is busy and your job is queued, you will have a hard time reading out the test result. unless you want to hang around reading real time debug output during the entire execution.

i might have to update the API for that specific usecase, to be able to provide both bin/hex to be flashed and a dfu package to upgrade to.

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

if you want to dig deeper see this: https://blog.japaric.io/itm/
summery: "Never, ever use semihosting to log data. Unless you can afford delays in the order of tens of milliseconds in your application."

I think the author might've made the exact same mistake of not increasing the adapter speed...

from infinitime.

endian-albin avatar endian-albin commented on August 15, 2024

@maidenone, if you want to support the Hypnos project as well, new over-the-air firmware images must to be sent over the Simple Management Protocol. I use the mcumgr command-line tool and run the following commands as root:

# mcumgr --conntype="ble" --connstring ctlr_name=hci0,peer_name='Hypnos' image list
# mcumgr --conntype="ble" --connstring ctlr_name=hci0,peer_name='Hypnos' image upload hypnos-mcuboot-app-img.bin
# mcumgr --conntype="ble" --connstring ctlr_name=hci0,peer_name='Hypnos' image test <hash of slot-1 image>
# mcumgr --conntype="ble" --connstring ctlr_name=hci0,peer_name='Hypnos' reset
# mcumgr --conntype="ble" --connstring ctlr_name=hci0,peer_name='Hypnos' image confirm

I do provide Nordic DFU packages for InifiniTime support, but Hypnos itself cannot accept them for upgrades.

Also, the only debug log available for Hypnos at the moment is JlinkRTT which gets enabled when building with LOGGING="on" but not in the default "production" firmware.

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

I change following files for P8:
SystemTask.h
line 85:
static constexpr uint8_t pinButton = 17; // pinetime 13
Cst816s.h
line 42:
static constexpr uint8_t pinReset = 13; // pinetime 10
BatteryController.h
line 51:
static constexpr uint32_t chargingPin = 19; // pinetime 12

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

InfiniTime-P8.zip

from infinitime.

tt1pjm avatar tt1pjm commented on August 15, 2024

Hi Ildar,

I've already got a working version of both bootloader and infinitime running on a P8. You'll need to make a small change to bootloader for different SPI Flash on the P8. Changes I made to bootloader are:
tt1pjm/pinetime-rust-mynewt@621da48
tt1pjm/pinetime-rust-mynewt@3fb35bc
Inifinitime works as expected with your changes.

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

@ildar sorry, too late reply you.
I try to install InfiniTime-P8.zip. it cannot work, every time reboot.
When I download new version from JF002. I will change some PIN number with following command. Finally It is work.

fileName="./InfiniTime-0.14.0/Pinetime"

perl -pi.bak -e 's/pinButton = 13/pinButton = 17/g' $fileName/src/systemtask/SystemTask.h
perl -pi.bak -e 's/pinReset = 10/pinReset = 13/g' $fileName/src/drivers/Cst816s.h
perl -pi.bak -e 's/chargingPin = 12/chargingPin = 19/g' $fileName/src/components/battery/BatteryController.h
cd $fileName
mkdir build
cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release -DARM_NONE_EABI_TOOLCHAIN_PATH=/Applications/ARM -DNRF5_SDK_PATH=~/nRF5_SDK_15.3.0 -DNRFJPROG=~/nrfjprog/9.4.0
make

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

@ildar I try to make your source code again. It's work.
I don't know why your InfiniTime-P8.zip cannot work for me.
I program "pinetime-app-0.14.0.bin" with swd

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

@ildar, made from your source code.
InfiniTime-0.14.0-P8.zip

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

@kung1388 , did you test it? what exact model string you have? thanks!

20210301_190743

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

@ ildar,
dfu.zip
work fine with OTA. But this dfu made by genpkg.
I want to change it with MAC address but not success.

from infinitime.

ildar avatar ildar commented on August 15, 2024

Try this: InfiniTime-P8.zip
It is the combined bootloader + Infinitime. Just flash it to 0x000

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

It's work fine.

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

I cannot make pinetime-mcuboot-app-0.14.0.bin and mynewt.elf.bin into one file.
How to do?

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

kung1388 avatar kung1388 commented on August 15, 2024

I modified the Pinetime code for P8.
https://github.com/kung1388/InfiniTime-P8.git
and
https://github.com/kung1388/mcuboot-bootloader-P8.git

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

JF002 avatar JF002 commented on August 15, 2024

Wow, nice work on this port of InfiniTime on the P8!

I see there's some interests on a version of InfiniTime on this device. I don't plan on doing and maintaining it myself (I don't have the hardware, and the time to do it), but if someone wants to do a full port (InfiniTime, bootloader, documentation, test, maintenance,...), we can try to find a way to integrate it nicely in the codebase.

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

morsedev avatar morsedev commented on August 15, 2024

Woow, great work!!, What is the status of this research now guys??

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

(UPDATES here)
latest builds:
pinetime-mcuboot-app-dfu-1.3.1-p8.zip
reloader-factory-P8.zip
InfiniTime-P8.zip

OLD: pinetime-mcuboot-app-dfu-1.0.0-P8.zip, pinetime-mcuboot-app-dfu-1.1.0-P8.zip, pinetime-mcuboot-app-dfu-1.2.0-P8.zip,pinetime-mcuboot-app-dfu-1.3.0-P8.zip

from infinitime.

morsedev avatar morsedev commented on August 15, 2024

Woowww!! So it is possible to install infinitime to p8 without open it, using wasp bootloader, do you mean using the one of this video?
https://youtu.be/VJoDtMy-4pk

from infinitime.

JF002 avatar JF002 commented on August 15, 2024

Awesome!
Great work on the porting InfiniTime and the bootloader (InfiniTimeOrg/pinetime-mcuboot-bootloader#6) on the P8!

Have you figured out a way to integrate your change in the project in a way that would allow to build both firmware (maybe using a cmake option like -DPLATFORM=pinetime | -DPLATFORM=colmi-p8, for example) ?

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

danielh186 avatar danielh186 commented on August 15, 2024

New version build available (#62 (comment)) Yet a number of new features do not work on my P8. So please test and write back. Thanks. 1. Gyro/motion sensor does not work. Multiple reboots did not help. 2. Wake on screen (double) tap. This must be dependent on the touch sensor model. (people seen 3 different sensors on P8s by the moment)

I'm pretty new to this but I heard that the Accl is rotated by 90° on the P8, might that be a problem or did you already change that in your ported firmware?

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

nextfullstorm avatar nextfullstorm commented on August 15, 2024

Guys, is there any known way to return to stock fw on P8?

from infinitime.

nextfullstorm avatar nextfullstorm commented on August 15, 2024

Well, there is. https://bloglon.blogspot.com/2020/07/p8-smartwatch-research.htm join gitter chat if you need help with this.

Right link.

from infinitime.

Semptum avatar Semptum commented on August 15, 2024

Decided to try and bought a P8 (MOY-TON5). My understanding is that they(MOY-TON5) lack a 32kHz oscillator which requires a bootloader aware of that, though I wasn't sure if that also applied to infinitime. Successfully flashed the wasp-os bootloader OTA. And flashed OTA the reloader-factory.zip from above (April 14) and got a blue pine logo which filled itself twice and then the screen went black.
Upon further inspection the pine logo is still present in the form of a slight transparency. The watch doesn't respond to button presses so I can't figure out if it's some sort of burn-in or if it's active. In any case, I'm going to go the SWD route now, just wrote this comment to say that if flashing OTA the current versions off of Aliexpress, probably a good idea to get the pogo jig ready :)

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

Semptum avatar Semptum commented on August 15, 2024

Wait. You got a working bootloader. You just need to boot to the recovery and flash InfiniTime.

Wish I could but it doesn't respond to button presses of any length.
The image on the screen remains constant, but after 12 hours I'm starting to doubt that it's burn-in so I'll try to discharge the battery (not sure if there is a quicker way than just waiting, perhaps shorting the charging pads through a resistor...) and rebooting that way. Attached is the best image I could take with a smartphone so you could judge for yourself. It actually has very clear edges and the stem of the pine is intact.
MOY-TON5 resting state image

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

PReDiToR avatar PReDiToR commented on August 15, 2024

https://github.com/PReDiToR/InfiniTime/releases/tag/1.1.0-P8

I hope this is done correctly, it works on my watch.

from infinitime.

androidonis avatar androidonis commented on August 15, 2024

I own a MOY-TON5 P8 and desperately looking for info on heart rate sensor. I had some back and forth with Colmi support (it did help a little to send google translated chinese). They checked with engineering and claim that there was never a change in heart rate sensor (HRS3300). But it is not working (using https://github.com/atc1441/ATCwatch). The I2C is different 0x38 instead of 0x44, as well as the register map. So far I was not able to find out a lot. The close up look (picture) shows a small pin1 dip which indicates a different chip orientation than HRS3300. This fits to Epticore EM30718, but so far I could not get any meaningful results using their I2C map (and their devices using 0x48, not 0x38). Beside my watch, I built a minimal system, just nRF52832 module (E73) and ST7789 240x240 display. I can run the watch firmware on that platform. One way to reverse engineer would be to program the stock MOY-TON5 firmware into that system and see what is happening on I2C outputs, using a second arduino as I2C 0x38 serving device or any other I2C analysis tool.
HRsensor_P8
P8minOnTable

Any chance to get Stock Firmware File for MOY-TON5 (must be different due to different Accl,HR sensors)?
How to flash it using ST-Link Cable?

BTW: Any good implementation on LIS3DH / SC7A20 accl sensor? I managed to get x,y,z and temp, but I need to average 16 values, since values were very noisy. Anyone found a good stepcounter implementation for this? (I plan to adapt this work to SC7A20, but not sure how the noise level confuses algorythm: https://forum.mikroe.com/viewtopic.php?t=61437)

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

gedesu avatar gedesu commented on August 15, 2024

Hello, flashed releaser-factory.zip from #62 links to P8a (factory MOY-TFK5) with ATCBootloader (ATCDFU) and DaFlasher and got brick, watch doesn't show anything, doesn't show up on bluetooth :( So everyone be careful if You don't want to unseal or don't have SWD programmer. Already tried 1. WASPOS, 2. ATCWatch on the same watch over OTA DFU without any problems.

BTW. Thanks all developers for all the hard work.

from infinitime.

androidonis avatar androidonis commented on August 15, 2024

Did you buy MOY-TFK5 recently? What type of ACCL chip and heart rate chip?

from infinitime.

gedesu avatar gedesu commented on August 15, 2024

Did you buy MOY-TFK5 recently? What type of ACCL chip and heart rate chip?

No i bought about P8a a year ago. I think it is BMA421 and HS3300 still didn't opened and didn't checked exactly :) Booth worked fine on ATCWatch and WaspOS, except on ATCWatch ACCL doesn't counted steps. But when i go in ACCL menu worked fine showed X,Y,Z axis values.
On Espruino 2v09 firmware got longest battery life for P8b (factory MOY-TIN5), also ACCL working OOTB, off course without step counting and heartrate at least for now.

Devs. Sorry for off topic.

from infinitime.

androidonis avatar androidonis commented on August 15, 2024

Just got an offer to buy MOY-TIN5, what is the ACCL, HR Sensor for this code?

from infinitime.

frazei avatar frazei commented on August 15, 2024

As more and more users are starting to install InfiniTime on P8, it's a good time to write a concise installation instruction: 1. If you already opened your P8 and have SWD programmer then flash an image from InfiniTime-P8.zip archive. 2. If you already have the Wasp bootloader or one of the atc1441 's bootloaders, you don't need to unseal your gadget, you can install OTA: reloader-factory-P8.zip 3. If you have your fresh and shiny P8 with stock FW, follow the DaFlasher path: https://github.com/atc1441/DaFlasherFiles to get to the point 2. 4. After you got the InfiniTime bootloader (through reloader-factory-P8.zip), you need to: a. get to the recovery (red pinecone). See video: https://video.codingfield.com/videos/watch/831077c5-16f3-47b4-9b2b-c4bbfecc6529 b. do OTA update (file pinetime-mcuboot-app-dfu-x.y.z-P8.zip) with GadgetBridge or NRFconnect, see video: https://video.codingfield.com/videos/watch/6363b421-77b1-4c61-a79b-82c0375dca8a All files are to be taken here: #62 (comment)

Hi @ildar I've followed the step described: my MOY-TON5 was running ATCwatchP8 (with atc1441's bootloader) then I tried OTA install of reloader-factory-P8.zip via DaFlasher but now the device is bricked: screen is black and nothing on BLE. I don't know what I've done wrong, help!

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

frazei avatar frazei commented on August 15, 2024

Hi @ildar I've finally connected my P8 to a raspberry and installed pinetime-updater. Now the connection with the watch is ok but the only thing that's working is the function to "Program bootloader logo" that gives me the image on screen. If I try to flash pine's bootloader and firmware the display stays black. Can you help me?

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

daniel-sousa-me avatar daniel-sousa-me commented on August 15, 2024

I had Wasp OS on my P8. As per the instructions on the Wasp OS page I flashed DS-D6-adafruit-back-to-desay-sd132v201.zip followed by ATCdfuFromSD2toSD5.zip
Then I think I made a mistake. I flashed FitBootloaderDFU2.0.1.zip (which seemed to be successful) and then pinetime-mcuboot-app-dfu-1.2.0-P8.zip.

Now I only get a black screen and my phone can't find it. Did I just brick it?

from infinitime.

fanoush avatar fanoush commented on August 15, 2024

Now I only get a black screen and my phone can't find it. Did I just brick it?

yes, just checked the zip and the .bin file inside is definitely not SDK11 application at all, Looks like the mcuboot/pinetime guys reused nordic dfu package format for something different.

It is a pity that the metatada inside is very generic so the bootloader accepts it. If e.g. the softdevice_req field would be some odd nonstandard number that doesn't match any nordic softdevice the nordic bootloader would refuse it and it would prevent people making such mistakes.

Here is beginning of the bin file
image
it can be seen that there are no valid interrupt vectors or stack pointer at the beginning like in typical nordic application

EDIT; see softdevice versions here https://devzone.nordicsemi.com/f/nordic-q-a/1171/how-do-i-access-softdevice-version-string
if the pinetime-mcuboot-app-dfu-1.2.0-P8.zip was build like e.g.

adafruit-nrfutil dfu genpkg --application pinetime-mcuboot-app.hex --sd-req 0x01 pinetime-mcuboot-app.zip

it would not be that dangerous as there is no nordic softdevice with id 0x01. currently it is build with no --sd-req which means 'app is valid for any softdevice' so nordic SDK11 bootloader will accept it.

from infinitime.

evanhuang117 avatar evanhuang117 commented on August 15, 2024

(UPDATES here)
latest builds:
pinetime-mcuboot-app-dfu-1.2.0-P8.zip
reloader-factory-P8.zip

OLD: pinetime-mcuboot-app-dfu-1.0.0-P8.zip, pinetime-mcuboot-app-dfu-1.1.0-P8.zip, InfiniTime-P8.zip

@ildar I flashed the .bin using OpenOCD using the program command and my P8 shows a black screen. Is there something else that I should be doing?

from infinitime.

Avamander avatar Avamander commented on August 15, 2024

@evanhuang117 You also need to flash the bootloader to the correct location. If you do not want a bootloader, you have to flash pinetime-app instead of pinetime-mcuboot-app.

from infinitime.

evanhuang117 avatar evanhuang117 commented on August 15, 2024

@evanhuang117 You also need to flash the bootloader to the correct location. If you do not want a bootloader, you have to flash pinetime-app instead of pinetime-mcuboot-app.

program bootloader.hex verify reset 0x00 is this not the right command to flash to 0x00? OpenOCD says that its running but the screen is completely black.

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

evanhuang117 avatar evanhuang117 commented on August 15, 2024

Argh!
Is reading so hard skill these days?
#62 (comment)

I suggest answering particular questions in chat , matrix or discord

@ildar I can assure you that I have already read and followed these instructions to flash the bootloader image. Have you seen my comment above? Has this bootloader been verified working on the MOY-TON5 or only on the original P8?

from infinitime.

hubmartin avatar hubmartin commented on August 15, 2024

Hi, I also use P8 with Infinitime firmware. How I could find the HW version? I already flashed the watches so I cannot read that from screen, then found that there is many versions. I saw that somewhere was a table with versions and hardware differneces like MOY-TON5. I would like to find what accelerometer I have inside.
All I do is apply this diff, and do make -j pinetime-app. I do not use bootloader and it works quite fine. Just no accelerometer.

diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h
index 04bcf6b..f2f56a5 100644
--- a/src/components/battery/BatteryController.h
+++ b/src/components/battery/BatteryController.h
@@ -68,7 +68,7 @@ namespace Pinetime {
       static constexpr uint8_t percentRemainingSamples = 5;
       CircBuffer<percentRemainingSamples> percentRemainingBuffer {};
 
-      static constexpr uint32_t chargingPin = 12;
+      static constexpr uint32_t chargingPin = 19;
       static constexpr uint32_t powerPresentPin = 19;
       static constexpr nrf_saadc_input_t batteryVoltageAdcInput = NRF_SAADC_INPUT_AIN7;
       float voltage = 0.0f;
diff --git a/src/drivers/Cst816s.h b/src/drivers/Cst816s.h
index 14c296e..22e482a 100644
--- a/src/drivers/Cst816s.h
+++ b/src/drivers/Cst816s.h
@@ -40,7 +40,7 @@ namespace Pinetime {
 
     private:
       static constexpr uint8_t pinIrq = 28;
-      static constexpr uint8_t pinReset = 10;
+      static constexpr uint8_t pinReset = 13;
       static constexpr uint8_t lastTouchId = 0x0f;
       static constexpr uint8_t touchPointNumIndex = 2;
       static constexpr uint8_t touchMiscIndex = 8;
diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h
index fa6a949..3fd6828 100644
--- a/src/systemtask/SystemTask.h
+++ b/src/systemtask/SystemTask.h
@@ -112,7 +112,7 @@ namespace Pinetime {
       static constexpr uint8_t pinSpiMiso = 4;
       static constexpr uint8_t pinSpiCsn = 25;
       static constexpr uint8_t pinLcdDataCommand = 18;
-      static constexpr uint8_t pinButton = 13;
+      static constexpr uint8_t pinButton = 17;
       static constexpr uint8_t pinTouchIrq = 28;
       static constexpr uint8_t pinPowerPresentIrq = 19;

So I would like to investigate how I could add one. It seems like there should be BMA421, but somewhere on the internet they say that the P8 with magnetic holder charger have different one.

Accelerometers BMA4xx should answer its chip ID on address zero. But this one does reply (ACKed) but sends 0x00.
image

from infinitime.

SibrenVasse avatar SibrenVasse commented on August 15, 2024

I followed the instructions in this post to install on my P8. I successfully installed the atc1441 bootloader.
After flashing reloader-factory-p8.zip with DaFlasher I've got a black screen. Anyone any pointers what to do?

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

fanoush avatar fanoush commented on August 15, 2024

After flashing reloader-factory-p8.zip with DaFlasher I've got a black screen.

These instructions are strange. when checking reloader-factory-p8.zip it has no chance to be correctly flashable with daflasher. @ildar it would help if you would mark the zip by required softdevice as suggested in post #62 (comment) to prevent these issues. Then the flasher would refuse the zip instead of bricking the device.

Current content in reloader factory zip look like this
image
All the vectors point to location 0x05xxxx, that is not where the code should be if it should be flashable by daflasher.

EDIT:
or at least with SDK11 or SDK14 based atc1441 bootloader (=app gets loaded to 0x1c000 or 0x23000) the vectors seem to point above the end of the file (file size 0x3ae50)

from infinitime.

nica-f avatar nica-f commented on August 15, 2024

So, as a kind of heads, here am I as a new interested in person in Infinitime on the P8 ;) I have got myself a couple P8b from eBay, turned out to be MOY-TIN5-1.8.2
Flashing over the air using atc1441's bootloader and reloader-factory-P8.zip did not work for, I ended up with a brick. So I opened the bricked watch and took some pictures from the inside, if it helps anyone:
https://www.dpin.de/cloud/index.php/s/cmjZBkNB2XyRXPs
Next I will attach an STLink SWD and go from there... but goal is of course to reflash on of the other P8b via OTA somehow.

from infinitime.

ildar avatar ildar commented on August 15, 2024

from infinitime.

Related Issues (20)

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.