Ralim / IronOS-Meta

Storing meta information about devices that dont need to be in the main repo
54 stars 10 forks source link

bootup logo on pinecil V1 broken? #34

Closed overflo23 closed 1 year ago

overflo23 commented 1 year ago

I flashed the current firmware 2.20 with the dfu-util. That worked fine

I later installed a bootlogo fom this repo, it flashed from the .dfu file but it will not show during boot.

I tried to flash older version of the firmware down to 2.16 but it does not show the logo, regardless of the firmwareversion. I enabled the bootup logo in the user interface menu, but it will not display no matter if 1,2,3,4 seconds or ∞ are chosen.

What did i do wrong?

sudo dfu-util -a 0 -D arcade_pac_man.png.dfu dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Match vendor ID from file: 1209 Match product ID from file: db42 Opening DFU capable USB device... ID 28e9:0189 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " file contains 1 DFU images parsing DFU image 1 image for alternate setting 0, (1 elements, total size = 1032) parsing element 1, address = 0x0800f800, size = 1024 Download [=========================] 100% 1024 bytes Download done. done parsing DfuSe file

Ralim commented 1 year ago

Hmm this is odd; I have 2.20 on a PinecilV1 here that does work. The logo code should be backwards compatible to the old format so even flashing an older dfu wont matter.

Those steps should be correct.

Can you try using dfu-util to read the flash from the pinecil instead and attach the file here?

River-Mochi commented 1 year ago

@overflo23

  1. how old is your V1 and have you installed boot logo on it before?
  2. did you get it from pine64.com? what color is your Pinecil?
  3. upgrade to newest Dfu 0.11 I can't tell if you have older 0.9 version or the newest 0.11 version. there have been issues reported on flashing with older dfu and as soon as people upgraded to newest one, flashing issues went away when newest DFU installed. for flashing firmware too use newest DFU. install notes for V1 also recommends upgrading to newest DFU first. https://dfu-util.sourceforge.net/releases/
overflo23 commented 1 year ago

Can you try using dfu-util to read the flash from the pinecil instead and attach the file here?

i updated the dfu-util and did the same procedure for flashing again. did not work out.

sudo dfu-util -a 0 -i 0 -U pinecil1.0_2.20+bootlogo.dfu dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2021 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device... Device ID 28e9:0189 Device DFU version 011a Claiming USB DFU Interface... Setting Alternate Interface #0 ... Determining device status... DFU state(2) = dfuIDLE, status(0) = No error condition is present DFU mode device DFU version 011a Device returned transfer size 2048 dfu-util: Unbound upload not supported on DfuSe devices Limiting default upload to 16384 bytes Upload [=========================] 100% 16384 bytes Upload done.

is a 16kB .dfu file reasonable? i never dumped a .dfu before.

pinecil1.0_2.20+bootlogo.dfu.tar.gz

River-Mochi commented 1 year ago

@overflo23

  1. how old is your V1 and have you installed boot logo on it ever before? is this a brand new V1?
  2. did you get it from pine64.com? what color is your Pinecil? this is important to know so we know which hardware you have.'
  3. where did this name come from "pinecil1.0_2.20+bootlogo.dfu" did you create that dfu image file as a custom art or downloaded this dfu image file from somewhere?
overflo23 commented 1 year ago

@1+2 i bought an original pinecil v1directly from pine PCB inprint reads: Pinecil_V1_0_20201020 @3: as stated above i downloaded the content of the pinecil after flashing logo and firmware to it and saved it in the file. the terminology of upload and download is twisted in dfu-util as it is viewed from the target contrary to the host as usual. (- U/ -D) will do the opposite of the intuitive thing.

River-Mochi commented 1 year ago

@1+2 i bought an original pinecil v1directly from pine

I see your message in Discord image

This is concerning that your Pinecil is brand new and yet it says Pinecil_V1_0_20201020 on the PCB. if you just got it recently, then it might be a fake copy, only the fake copies would have that printed on PCB and be shipped recently. Aliexpress for example is selling fake copies or the original older V1 with V1_0-... printed on the PCB.

Could you post a photo of the outside of the Pinecil the handle? all Pinecils sold Aug 2, 2022 onwards will be all black color with a Green silicone thumb grip (and they have a MCU with BLE bluetooth BL706. Only very old original Pinecil V1 will have Pinecil_V1_0... printed on the PCB and they have not been sold since last year.

Good news is that we have been able to help many people in the discord chat with even fake copies of older V1 to get firmware updated on it.

overflo23 commented 1 year ago

no i got it some time back. maybe a year or so. its very likely genuine.

when i wrote i opened it yesterday i mean i opened the pinecil to peek inside ;)

River-Mochi commented 1 year ago

no i got it some time back. maybe a year or so.

ok, that makes more sense. If you bought this V1 over a year ago then that is normal. The discord chat message was confusing because it says you opened it yesterday and it had Pinecil_V1... I thought you meant you just got it now. I understand now

River-Mochi commented 1 year ago

Either something is happening with the dfu flashing method and that is why boot logo is not flashing or something is happening with the python image custom art.

  1. if DFU does not work, then try this other updater if you are on Linux. https://github.com/Spagett1/PineFlash (Pineflash works for Linux and Mac)
  2. if you can get to a Windows box, some people who had issues updating on linux were able to do it on a windows pc/laptop and in that case you can use this app which is preferred https://github.com/pine64/pine64_updater/releases/tag/1.0.3
  3. if neither of the above firmware flashers works. look at your boot logo art file. Test first if one of the stock boot logo works and let us know. a. download and extract the pinecil.zip set of boot logo art from this page https://github.com/Ralim/IronOS-Meta/releases b. then pick one of the dfu files - one of the images that has a name ending in dfu (only DFU files will work on older V1). c. see if you can get one of those dfu logo to work from that zip then the boot logo and flashing is working. you can use the dfu-util on the command line or use the Linux gui PineFlash app that one of the volunteers made that also works on Linux. and if that doesn't work see if you can use Gamiee's Pine64 updater gui on Windows pc.

This will eliminate some possibilities.

River-Mochi commented 1 year ago

To confirm the files are all working. I just now personally downloaded Pinecil.zip with all the boot logo art. and tested updating 3 different ones. I tested this on Windows 11 PC, using this flasher/updater, https://github.com/pine64/pine64_updater/releases/tag/1.0.3 image Note that in windows11, have to "run as administrator" and "allow" the flasher to run as windows will pop up a message that it is unknown app. This is on one of my older Pinecil V1 models. I used the file arcade_pac_man.png.dfu

IMG_3506

I tested 3 different ones in that pinecil.zip and all worked. but this is on windows 11, using gamiee's updater.

River-Mochi commented 1 year ago

don't know if this will help, but when I made some custom logo art I made sure to update to newest Python on windows. I'm currently at 3.11 as of today. for these stock images inside the zip file it should not make a difference since they are all pre-made dfu and ready to use.

overflo23 commented 1 year ago

if read this right the pinecil flasher tool is a wrapper for dfu-util functionality

i was able to flash the .dfu for 2.20 and can confirm that worked. when i flash the precompiled bootlogo (arcade_pac_man) i get the following output: sudo dfu-util -a 0 -D arcade_pac_man.png.dfu dfu-util 0.11

Match vendor ID from file: 1209 Match product ID from file: db42 Multiple alternate interfaces for DfuSe file Opening DFU capable USB device... Device ID 28e9:0189 Device DFU version 011a Claiming USB DFU Interface... Setting Alternate Interface #0 ... Determining device status... DFU state(2) = dfuIDLE, status(0) = No error condition is present DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Found GD32VF103, which reports a bad page size and count for its internal memory. Fixed layout based on part number: page size 1024, count 128. File contains 1 DFU images Parsing DFU image 1 Target name: IronOS-dfu Image for alternate setting 0, (1 elements, total size = 1032) Setting Alternate Interface #0 ... Parsing element 1, address = 0x0800f800, size = 1024 Erase [=========================] 100% 1024 bytes Erase done. Download [=========================] 100% 1024 bytes Download done. Done parsing DfuSe file

a broken cable or dfu problem is not here or i would not be able to flash the ironOS 2.20 with the same tools.

is there a way to dump the current memory complete into a .dfu or .bin or anything to check the contents?

the -U seems not work properly, it only returns 16K but the upload of pinecil_EN.dfu is 53k alone. i played with the -t und -Z options, but had no success getting any more data than the 16kb file already linked above. (pinecil1.0_2.20+bootlogo.dfu.tar.gz

is the highlighted part about the bad page_size and count normal behaviour?

overflo23 commented 1 year ago

i have second pinecil v1 here that i just flashed with the same procedure and the same results as the first pinecil v1 the dfu-util output with the bad page_size is also identical.

flash ok, on first boot "some settings changed" on display. enabled "show bootlogo" in menu. but no logo anywhere. ¯\(ツ)

i found a way to dump memory regions via dfu-util sudo dfu-util -s 0x0800f800 -a 0 -i 0 -U 0x0800f800.bin dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2021 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device... Device ID 28e9:0189 Device DFU version 011a Claiming USB DFU Interface... Setting Alternate Interface #0 ... Determining device status... DFU state(2) = dfuIDLE, status(0) = No error condition is present DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Found GD32VF103, which reports a bad page size and count for its internal memory. Fixed layout based on part number: page size 1024, count 128. Limiting upload to end of memory segment, 67584 bytes Upload [=========================] 100% 67584 bytes Upload done.

DUMPS: contents.tar.gz

contains 0x8000000 = pinecil_EN.dfu and 0x800f800 contains the logo. not sure if the data matches. i uploaded the arcade_pac_man.png.dfu but the dump seems to be raw binary data not .dfu metadata

hexdump -C 0x0800f800.bin = flash read back that should contain the pacman arcade logo

00000000 aa 00 ff 00 00 00 00 00 00 00 80 80 00 00 00 00 |................| 00000010 00 80 80 00 00 00 00 00 00 b0 b0 00 00 00 00 00 |................| 00000020 00 f0 f0 00 00 00 00 c0 e0 30 10 f0 f0 00 00 f0 |.........0......| 00000030 f0 80 80 f0 f0 00 00 10 10 10 10 f0 f0 00 00 70 |...............p| 00000040 f0 80 00 f0 f0 00 00 00 00 80 80 00 00 00 00 00 |................| 00000050 80 80 00 00 30 38 78 7c 7c fc fc fc f8 f8 f0 c0 |....08x||.......| 00000060 00 00 00 00 00 00 00 00 00 03 07 07 03 00 00 00 |................| 00000070 03 07 07 03 00 00 00 00 0e 1f 1f 0e 00 00 00 1e |................| 00000080 1f 01 01 1f 1e 00 00 07 0f 18 10 1f 1f 00 00 07 |................| 00000090 0f 18 18 0f 07 00 00 10 11 11 11 1f 1f 00 00 0e |................| 000000a0 1f 11 11 1f 1f 00 00 00 03 07 07 03 00 00 00 03 |................| 000000b0 07 07 03 00 18 38 3c 7c 7c 7e 7e 7f 3f 3f 1f 07 |.....8<||~~.??..| 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000400 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| 00010400 aa 55 ff ff 68 01 96 00 05 00 00 00 21 00 5a 00 |.U..h.......!.Z.| 00010410 02 00 07 00 01 00 01 00 00 00 0a 00 00 00 01 00 |................| 00010420 01 00 00 00 00 00 02 00 00 00 04 00 01 00 d3 01 |................| 00010430 ae 01 84 03 00 00 00 00 0a 00 02 00 07 00 00 00 |................| 00010440 00 00 ff ff 14 00 00 00 21 00 05 00 00 00 ff ff |........!.......| 00010450 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 00010800

does this look like reasonable content?

discip commented 1 year ago

@overflo23 Have you tried:

sudo dfu-util -D arcade_pac_man.png.dfu
River-Mochi commented 1 year ago

setting for boot logo timeout, try 5 seconds or infinity symbol. Also I noticed on Gamiee's Pine Updater, I could not do the boot logo in the same session as firmware update. In other words, if I do a firmware update, I have to exit from the DFU app completely first. then connect pinecil V1 again and then do Boot logo. and if I wanted to change the boot logo, I had to exit the app again and reconnect again a new session.

yes the Gui app in windows is just a wrapper for DFU. In Linux you should be able to just use the command line newest 0.11 dfu to load the logo. There is also a Linux Gui app for V1, give that a try, I have used Spagett's Linux app to install both firmware and also boot logo art and it works. https://github.com/Spagett1/PineFlash

If you are having issues on the command line dfu-util, it doesn't hurt to give Spagett's Linux/Mac app a try. or go to a different machine like windows if you have access and try Gamiee's Pine64 Updater.

River-Mochi commented 1 year ago

I think this ticket can be closed?