HappyZ / dpt-tools

dpt systems study and enhancement
MIT License
565 stars 130 forks source link

download the official pkg in case you need those #31

Closed HappyZ closed 5 years ago

HappyZ commented 5 years ago

Results obtained from curl https://www.sony.net/Products/DigitalPaperSystem/Software/DP/info.xml

As of the day this is created:

For DPT-RP1:

URI="https://www.sony.net/Products/DigitalPaperSystem/Software/DP/FwUpdater.pkg"
Version="1.4.01.16100"

For DPT-CP1:

URI="https://www.sony.net/Products/DigitalPaperSystem/Software/DP/FwUpdater_1.4.02.09061.pkg"
Version="1.4.02.09061"

Modded official PKGs please refer to https://github.com/HappyZ/dpt-tools/wiki/PKGs-I-Made/.

HappyZ commented 5 years ago

If you can still connect via normal boot, use official fw flashing.

If you have mass storage after boot up (but can't get into system and can't do fw), put the modded PKG into it and reboot.

If neither:

Get the system.img by unpacking the official PKG using this tool.

Enter the diagnosis mode. Use python dpt-tools.py --diagnosis to connect.

Then run /usr/local/bin/factory_reset.sh.

Then run restore-systemimg and follow the instructions.

NOTE: multiple people have done this wrongly!! Pay attention to the following:

When it asks Is it a sparse image?, for official image, answer yes.

(Only answer no if you use system.img from taobao pkg)

Otherwise, ping me.

qz-lab commented 5 years ago

Thank you very much! But there was a bit more problem ...

I downloaded the official firmware, ran 'official_pkg_unpacker_pkg.sh' to unpack it, entered the diagnosis mode, copied the 'system.img' into mmcblk0p16. When I ran md5sum, I got 'a35d6d6697b637184aeb41b4f356ff95', instead of '5081ec24954714373229a7c76154509a ' you mentioned.

I repeated the whole process and got the same md5 value. So, what's going on ?

HappyZ commented 5 years ago

@Zack-Q you shall compare the system.img with the system.img.md5 inside your downloaded official pkg.

qz-lab commented 5 years ago

Yeah, they don't match. But boot.img and boot.img.md5 match. It's weird. I download system.img from 'https://github.com/jbschooley/DPTstuff/blob/master/README.md', which matches with the unpacked one. I'm trying to download them again.

qz-lab commented 5 years ago

I give up. Try the unpacked system.img even it doesn't match with its system.img.md5.

HappyZ commented 5 years ago

@Zack-Q ahha, I see the confusion parts. The system.img.md5 is the md5 of the image after extraction (since system.img is a sparse image):

md5sum -b /dev/mmcblk0p9 | cut -d " " -f1

The official system.img for DPT-RP1 version 1.4.01.16100 should have a35d6d6697b637184aeb41b4f356ff95.

qz-lab commented 5 years ago

Thanks for your patience. I succeeded in flashing the official system.img. But after rebooting, it prompts Unfortunately, Setting has stopped and Unfortunately, AppLauncher has stopped. So I fw the official FwUpdater.pkg again, but the problem is still unsolved. And dpt doesn't responds when pressing the home button.

qz-lab commented 5 years ago

Solved, adb removes the /data/system/{ExtMgr.db,ExtMgr.db-journal}, everything back to normal. Appreciate your help again, really!

HappyZ commented 5 years ago

I see. You need to get adb logcat so I know what is going on. Without it, I can only guess it is due to some caching issues. Try in adb shell, and step 5 in Launcher app under 0x4 section.

@Zack-Q no prob.

ziegfeld commented 5 years ago

BTW here's some already unpacked boot.img and system.img with md5 sums if you prefer: https://github.com/jbschooley/DPTstuff/tree/master/FW%201.4.01.16100%20Stock

hitmoon commented 5 years ago

@HappyZ Here is How I damage my system: My device is DPT-CP1, version 1.4.02.09061 I try to install kindle apk to /system/app, and I push apk's native libs to /sytem/lib. Then I can not boot CP1, it reboot repeatly! Anyway, Thanks @HappyZ , I will follow your advice to try to recover the system partition.

HappyZ commented 5 years ago

This is weird. I would be curious in the logcat before rebooting.

What happens if you just use adb to install the Kindle app?

On Fri, Dec 14, 2018, 07:47 hitmoon <notifications@github.com wrote:

@HappyZ https://github.com/HappyZ Here is How I damage my system: My device is DPT-CP1, version 1.4.02.09061 I try to install kindle apk to /system/app, and I push apk's native libs to /sytem/lib. Then I can not boot CP1, it reboot repeatly! Anyway, Thanks @HappyZ https://github.com/HappyZ , I will follow your advice to try to recover the system partition.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/HappyZ/dpt-tools/issues/31#issuecomment-447330151, or mute the thread https://github.com/notifications/unsubscribe-auth/AEdSKgGT-Ulm1c6udcF-51Vy7ypcLgihks5u46vggaJpZM4ZQR6F .

hitmoon commented 5 years ago

@HappyZ use adb to install the kindle app is success, but the app is sit on /data/ by default and I can not launch it from the Launcher. I also follow the guide you provide to modify the extension files, but it just not work.

hitmoon commented 5 years ago

Really Really thank you guys @HappyZ @Zack-Q and @jbschooley, My CP1 is back to life again! A few months ago, I searched XDA and google, but It seems no idea to root CP1, BUT now it's come to reality, Thanks for all your hard work!

HappyZ commented 5 years ago

Even if you remove the app it still reboots?

On Fri, Dec 14, 2018, 08:35 hitmoon <notifications@github.com wrote:

@HappyZ https://github.com/HappyZ use adb to install the kindle app is success, but the app is sit on /data/ by default and I can not launch it from the Launcher.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/HappyZ/dpt-tools/issues/31#issuecomment-447343149, or mute the thread https://github.com/notifications/unsubscribe-auth/AEdSKqH4kYx2I0AU-WOR4kprVacpOrWrks5u47cegaJpZM4ZQR6F .

hitmoon commented 5 years ago

Even if you remove the app it still reboots? On Fri, Dec 14, 2018, 08:35 hitmoon @.*** wrote: @HappyZ https://github.com/HappyZ use adb to install the kindle app is success, but the app is sit on /data/ by default and I can not launch it from the Launcher. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#31 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AEdSKqH4kYx2I0AU-WOR4kprVacpOrWrks5u47cegaJpZM4ZQR6F .

Yes, I think I pushed some libs which corrupt the system's original ones, and cause it misfunction to boot normally. By the way, I have some knowledge about linux and android system, If needed, I am ready to help.

yefeiyu commented 5 years ago

Or, equivalently, you can use the dpt-tools.py in diagnosis mode. Just use restore-systemimg and follow the instructions.

When it asks Is it a sparse image?, if you get it from official pkg, then answer yes. If you use system.img from taobao pkg, then answer no. Otherwise, ping me.

urgent! I use system.img from official pkg, but answer no! (download from https://www.sony.net/Products/DigitalPaperSystem/Software/DP/FwUpdater.pkg) (Then restore the previously backed up files bootimg.bak and update script in this same diagnosis interface) So..... I can't enter the desktop, and can't enter the Big Square, it's only three small long square on the up-left corner. Now normally boot, although can't enter the desktop environment, the adb devices can find it.

HappyZ commented 5 years ago

well.. you probably overwrote your system partition with the sparse image which is incorrect..

you should still be able to get into diagnosis mode: before the third bar appear, press the HOME button once. It should directly go to diagnosis mode - if you could get into diagnosis before.

yefeiyu commented 5 years ago

I can't use python3 dpt-tools -ip xxx connect dpt, how do I control >>> diagnosis through my computer ?

HappyZ commented 5 years ago

Just do python3 dpt-tools.py --diagnosis directly

On Tue, Feb 19, 2019 at 10:34 PM yefeiyu notifications@github.com wrote:

I can't use python3 dpt-tools -ip xxx connect dpt, how do I control >>> diagnosis through my computer ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/HappyZ/dpt-tools/issues/31#issuecomment-465419458, or mute the thread https://github.com/notifications/unsubscribe-auth/AEdSKl5ZksZ0yhQuxOeUlczvp3n8hHtPks5vPNBJgaJpZM4ZQR6F .

-- BR | Yanzi Zhu https://happyz.me

yefeiyu commented 5 years ago

Can't get into diagnosis mode whatever I press the HOME button.:-( There are only three gray rectangular squares in the upper-left corner. I connected Mac to use diagnosis, the result shows: (And it did not find the COM port when I connected the PC.)

>>> Enter the serial port [/dev/tty.usbmodem01]: 
[error] Cannot open serial port /dev/tty.usbmodem01 due to [Errno 2] could not open port /dev/tty.usbmodem01: [Errno 2] No such file or directory: '/dev/tty.usbmodem01'

When I start it normally, connect to Mac with USB line (It has mounted partition with system.img and boot.img.bak, The Digital Paper App will automatically try to connect, but it won't connect), When I tried the adb command:

$ adb devices
List of devices attached
324650005033321 device

$ adb shell
- exec '/system/bin/sh' failed: No such file or directory (2) -
yefeiyu commented 5 years ago

Looking forward to your guidance.

HappyZ commented 5 years ago

Can't get into diagnosis mode whatever I press the HOME button.:-( There are only three gray rectangular squares in the upper-left corner. I connected Mac to use diagnosis, the result shows: (And it did not find the COM port when I connected the PC.)

if you have the bar appearing, then you should be able to get into diagnosis mode..

you need to find COMx in your windows (https://superuser.com/questions/1059447/how-to-check-com-ports-in-windows-10) and input that when it asks for serial port. /dev/tty.usbmodem01 isn't correct..

yefeiyu commented 5 years ago

I tried 3 computers, Mac, Win10, XP. and I had select "Show hidden devices" in Win10 and XP, but the port lists remains unchanged no matter how I plugged into the USB line or not. I used an MacBook before, when I use --diagnosis - >>>Enter the serial port I just press Enter to select the default port and I have succeeded in the operation before yestoday.

Today on Mac I tried /dev/tty.usbmodem01 and other port numbers such as 02, 03, 1, 2, 3, they all got same error message.

>>> Enter the serial port [/dev/tty.usbmodem01]: /dev/tty.usbmodem1
[error] Cannot open serial port /dev/tty.usbmodem1 due to [Errno 2] could not open port /dev/tty.usbmodem1: [Errno 2] No such file or directory: '/dev/tty.usbmodem1'

On PC,I used the port COM5 that was successful before yesterday, and the port COM6 that connected to adb successfully in the normal boot state (now turned on by hiding the hidden device, they are shown as translucent), and all failed.

Even if the bar appearing(as shown below), the computer can't seems to find the port of dpt. The PC just refreshed device manager when I inserted dpt into, it doesn't show a new COMx port, even if I select "Show hidden devices" in device manager. On the mac I have not seen any changes in inserts and uninserted via lsusb. 31550713903_ pic

HappyZ commented 5 years ago

In Mac, are you able to see something similar to it under folder /dev/?

On Wed, Feb 20, 2019, 19:30 yefeiyu notifications@github.com wrote:

I tried 3 computers, Mac, Win10, XP. and I had select "Show hidden devices" in Win10 and XP, but the port lists remains unchanged no matter how I plugged into the USB line or not. I used an MacBook before, when I use --diagnosis the >>>Enter the serial port I just press Enter to select the default port.

Today I tried /dev/tty.usbmodem01 and other port numbers such as 02, 03, 1, 2, 3, they all got same error message.

Enter the serial port [/dev/tty.usbmodem01]: /dev/tty.usbmodem1 [error] Cannot open serial port /dev/tty.usbmodem1 due to [Errno 2] could not open port /dev/tty.usbmodem1: [Errno 2] No such file or directory: '/dev/tty.usbmodem1'

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/HappyZ/dpt-tools/issues/31#issuecomment-465824719, or mute the thread https://github.com/notifications/unsubscribe-auth/AEdSKsTGs56aCzf1U5rSDCF6XjbmjyIXks5vPfargaJpZM4ZQR6F .

ultraboy commented 5 years ago

I recently encountered same problem, my Mac can't find the usb connection of my dpt-rp1. I'm not quite sure how I solved this, but you can try this: disconnet dpt-rp1 completely(pull out usb cable from your computer AND dpt-rp1), AFTER dpt-rp1 enter diagnostic stat, then connet.

HappyZ commented 5 years ago

On the mac I have not seen any changes in inserts and uninserted via lsusb. 31550713903_ pic

Looks like yours stuck at the button check - which fails in potentially two ways:

1) You press the HOME key too late, try to hold the HOME key during the boot up (into diagnosis mode)

<- I think this is more likely, as you did not even have the big rectangle showing up, below is my script, you can see the logic

# if HOME pressed, go into diagnosis mode directly
busybox script -c "timeout -t 3 keyscan" -f -q ${KEY_DETECTION_TMPF} <- dumping file to tmp folder
grep -Fq "HOME" ${KEY_DETECTION_TMPF}
if [ $? -eq 0 ] <- if key is detected, it will go to diagnosis mode
then
  rm ${KEY_DETECTION_TMPF}
  epd_fb_test gray GC16 PART 10 0 50 50 150 250
  initctl start diag
  exit 0
fi

2) When you got the image, you said no. So the script uses dd to dump into the img in system partition. Although not very likely, a plausible explanation is the erroneous dump either overwrites the diagnosis initialize script, or maybe affect the tmpfs causing the script failed to recognize the pressed key. If this actually happens, then there is no way of rescuing it. And hopefully you are still within warranty.

yefeiyu commented 5 years ago

I am in China, there is no warranty, it is difficult to hand it to the United States. Normal boot can see the storage disk, can you upload the flash file to here, and then use this file to flash dpt at boot automatically?

HappyZ commented 5 years ago

I am in China, there is no warranty, it is difficult to hand it to the United States. Normal boot can see the storage disk, can you upload the brush file to here, and then boot automatically use the files flash dpt?

oh! you have the storage disk? great, then download the official PKG I modded at https://github.com/HappyZ/dpt-tools/wiki/PKGs-I-Made. Then just put the PKG file in the storage and rename it to FwUpdater.pkg. Then reboot the device, and it will flash it itself - if the dd does not hurt other things.

yefeiyu commented 5 years ago

I had another FwUpdater.pkg in the storage disk from yestoday. But it seems to have never worked. :) Let's me try.

HappyZ commented 5 years ago

I had another FwUpdater.pkg in the storage disk lots of days. But it seems to have never worked. :) Let's me try.

What is that FwUpdater.pkg? If it's the official one, then it will not pass the version check (as your system is the latest). You have to use the one I modded. However, I am not sure why you cannot press the key and then go to diagnosis mode. This sounds suspicious.

If that didn't work, try this PKG and see if your screen actually prints anything. If so, maybe there is still hope. This pkg does not do anything other than print dummy messages on your DPT screen. fw.pkg.zip

yefeiyu commented 5 years ago

I have tried countless times and many ways to push Home key:-( Now both of these files have been tried, they are not reflected, they are all quietly staying there.

yefeiyu commented 5 years ago

And the storage disk's name is shown as Untitled on Mac, and U盘 on PC, Which have other's 4 hidden files on Mac:

.fseventsd
.Spotlight-V100
.trashes
System Volume Information

5 files on PC, the above 4 and: ._FwUpdater.pkg

Normal boot can see USB serial device on PC side.

HappyZ commented 5 years ago

If you press HOME key, does it show a solid block top left corner, or it's still three bars?

yefeiyu commented 5 years ago

still 3 bars.

yefeiyu commented 5 years ago

I remember that from the day before yesterday, when I can normally enter diagnosis mode, it changes, at first display 3 bars -> disappear -> and then a rectangular square appears.

Is it related to the image.img that I flashed Taobao?

HappyZ commented 5 years ago

I remember that from the day before yesterday, when I can normally enter diagnosis mode, it changes, at first display 3 bars -> disappear -> and then a rectangular square appears.

The normal behavior when you press HOME correctly is: 3 bars -> top left block appears -> center block also appears.

I do not see any possibility the script pauses before HOME button check, only possible after. To confirm, you first turn off the device.

Then you hold HOME key, and pressed POWER key. You released POWER, then yellow light flashes, and you keep holding HOME. Is that correct?

yefeiyu commented 5 years ago

Yes.I did this. Moreover, I have tried all kinds of ways.

yefeiyu commented 5 years ago

Use the OTG line to enter diagnostic mode, is the same method or result entered as the script? Do I have to buy an OTG line to try?

HappyZ commented 5 years ago

Use the OTG line to enter diagnostic mode, is the same method or result entered as the script? Do I have to buy an OTG line to try?

It won't be helpful as it goes through the same script. Yours apparently stuck at something else, which we don't know what it is yet.

Are you able to push any files into the device during normal boot? via adb push xxx / Folders to try include:

/sbin/
/system/sbin/
/system/bin/
/system/xbin/
/etc/

Also, when you tried all above methods, did you wait for maybe 5min before you think it didn't work?

yefeiyu commented 5 years ago
$ adb push LICENSE /sbin
adb: error: failed to copy 'LICENSE' to '/sbin/LICENSE': remote Permission denied
LICENSE: 0 files pushed. 0.5 MB/s (1074 bytes in 0.002s)
$ adb push LICENSE /system/sbin
adb: error: failed to copy 'LICENSE' to '/system/sbin': remote Read-only file system
LICENSE: 0 files pushed. 1.0 MB/s (1074 bytes in 0.001s)
$ adb push LICENSE /system/bin
adb: error: failed to copy 'LICENSE' to '/system/bin': remote Read-only file system
LICENSE: 0 files pushed. 1.0 MB/s (1074 bytes in 0.001s)
$ adb push LICENSE /etc
adb: error: failed to copy 'LICENSE' to '/etc': remote No such file or directory
LICENSE: 0 files pushed. 0.9 MB/s (1074 bytes in 0.001s)
$ adb ls /
000041ed 000003e8 5c6f476b .
000041ed 000003e8 5c6f476b ..
000041c0 00001000 00000000 teesst
000041ff 00000028 5c6f476b tmp
000041fd 00001000 5aa38506 NVM
0000a1ff 00000018 5c6f476a sdcard
000041e9 00000078 5c6f476a storage
00004140 00000028 5c6f476a config
000041f8 00001000 5aa38518 cache
000041ed 00000000 5c6f476a acct
0000a1ff 0000000e 5c6f476a vendor
0000a1ff 00000011 5c6f476a d
0000a1ff 0000000b 5c6f476a etc
000041fd 000000a0 5c6f476a mnt
000081a4 000241f6 5bf14a4c sepolicy
000041f9 000001b8 5c6f476b data
000081e8 0000293e 5bf14a4c init_bsp.pxa1908.rc
000081e8 00000322 5c146b2e init.usb.rc
000081e8 00004b55 5bf14a4c init.pxa1908.rc
000081a4 000002ca 5c141477 adb_keys
000081e8 00004b4b 5bf14a4c init_bsp.rc
000041ed 0000003c 00000000 lib
000081a4 000011df 5bf14a4c ueventd.pxa1908.rc
000081e8 000009b3 5bf14a4c init.tel.rc
000081a4 0000263b 5bf14a4c service_contexts
0000416d 00000000 5c6f476a sys
000041ed 00000028 00000000 system
000081e8 0000012d 5bf14a4c init.zygote32.rc
000081a4 00000ad3 5bf14a4c property_contexts
000081a4 00001170 5bf14a4c ueventd.rc
000081e8 00000205 5bf14a4c init.pxa1908.security.rc
000081e8 000003a4 5bf14a4c init.pxa1908.tel.rc
000041e8 000000b4 5c146bfd sbin
000081a4 00000210 5bf14a4c seapp_contexts
000081a4 0000003d 5bf14a4c selinux_version
000081a4 0000016e 5c14692f default.prop
000081a0 00000c11 5bf14a4c fstab.pxa1908
0000a1ff 0000000d 00000000 charger
000081e8 00000b6b 5c146de3 init.pxa1908.usb.rc
000081e8 00000787 5bf14a4c init.trace.rc
000081e8 000002b4 5bf14a4c init_bsp.pxa1908.tel.rc
000081e8 000003b0 5bf14a4c init.environ.rc
000081e8 00005b11 5bf14a4c init.rc
000041ed 0000003c 00000000 res
000081e8 00005831 5bf14a4c init.pxa1908.sensor.rc
000081e8 00038940 5bf14a4c init
000081a4 00004676 5bfe255f file_contexts
0000416d 00000000 00000000 proc
000041c0 00000028 5acc85e9 root
000041ed 00000c1c 5c6f476b dev
yefeiyu commented 5 years ago
$ adb ls /
adb: error: failed to get feature set: no devices/emulators found

It's lost the connection 5min later without my touch. And it's seems that the dpt hasn't root permission, so I put the FwUpdate.pkg into storage disk can't work. Can we use all of the files deviceid.dat privatekey.dat publickey.dat workspace.dat which I copied from Digital Paper App (now the App can't connect the dpt properly) on MacOs last time 1month before?

And I have tried all above methods many times, but didn't pay attention to the length of time. I try again now.

HappyZ commented 5 years ago

Unfortunately, the adbd I included is a secured version so it has no permission to do any changes. Also since you do not have sh it cannot remount / anyway.. I thought maybe /etc/ or /sbin/ is writeable, but it was incorrect without a proper remount.

Applying FwUpdate.pkg is a totally different process. It should be independent to the Android system. I had a discussion with shankerzhiwu and we could not figure out the root cause where the update script got stuck, based on logical analysis.

You cannot use those files since your system partition is wiped out.. And what exactly did you do after you did restore-systemimg with the wrong command?

The timing is for flashing PKG to go through. It may take a while (minutes) to unpack PKG etc. (for the modded official PKG).

yefeiyu commented 5 years ago

(The following terms are written in memory and are not accurate. The sequence of operations is correct.) There have 5 commands in the --diagnosis list, after I did restore-systemimg with the wrong command, I executed the following commands in turn: 1, Restore system image (at here I select no for official img file). 2, Restore my boot.img.bak file on the storage disk which back up at one month ago. 3, Click the Supper Su, whick told me haven't someting about supper su, failure. 4, Click the update script, succeeded. Reboot, then I can't enter the system of --diagnosis.

HappyZ commented 5 years ago

(The following terms are written in memory and are not accurate. The sequence of operations is correct.) There have 5 commands in the --diagnosis list, after I did restore-systemimg with the wrong command, I executed the following commands in turn: 1, Restore system image (at here I select no for official img file). 2, Restore my boot.img.bak file on the storage disk which back up at one month ago. 3, Click the Supper Su, whick told me haven't someting about supper su, failure. 4, Click the update script, succeeded. Reboot, then I can't enter the system of --diagnosis.

Although it may not be super helpful in your case, I can only guess in your 4th step the update script was only patched half way through and maybe the rest did not go through?

To confirm if that is actually the case: put the PKG file in the mass storage. Then try to boot into diagnosis mode. Previously you said it just stuck at the three bars, correct? Now before the third bar appear, press the POWER button once (not HOME button). It will delete the PKG ideally, if the script is patched correctly. So now if your press RESET button to turn off the device, and then start to boot into normal system, the mass storage should have nothing in it.

Otherwise, I really got no clues why it happens like this. Sorry about that.

yefeiyu commented 5 years ago

I tried many times, it didn't delete the PKG file. This issue ends here? I am consider return it to factory, and sorry for the trouble caused to you and shankerzhiwu.

yefeiyu commented 5 years ago

My dpt is on the way back to repair, it is full of blood! At the begining I asked one of Taobao cracker, who required the same price as crack dpt. 5days before, the second Taobao cracker only need a small amount of money to do this, although his crack is also very expensive. (From the perspective of selfness help, all of us should give HappyZ our respect! Of cause, charge the fee, work hard, and be equally precious) The first cracker said his method is different with ours, now I guess the second cracker is different too. I guess that in more scenarios we should use fw instead of ---diagnosis-restore-systemimg. The fw command is more safe. After all, the FwUpdate.pkg is the official standard document and if we wanna use system.img, we have to extract it. isn't it? At last, May we modify the sentence of Is it a sparse image? to Is it a sparse (offical) image? or use a popular word:-)

HappyZ commented 5 years ago

@yefeiyu thanks, and im glad you got your device recovered. I would be very curious how they recover it other than opening it up and de-soldering your emmc.

That's a good advice. I'll change that accordingly.

yefeiyu commented 5 years ago

That's all. For all of us who are grateful, you should put a donation coffee link. This is a common practice, not for what you get , but for our gratitude.

yefeiyu commented 5 years ago

I just donated a cup of coffee and thank you for your continued help. I would like to express my gratitude to you. Transaction ID: 0PL63339U57****3H