LA10 smartwatch (Linwear/Kingwear/Lige/etc...). tools, watchface structure, direct connect via BT

Search This thread

vxsw

Senior Member
Dec 10, 2021
106
27
finally I broke my watch (physically, display damage), so... would try something other.
but, I found a way to download ~3500 watch faces from ffit servers. I tried few of it and it have a different format, but still fine as resources. will add this ability to my wfdownloader a bit later.
 

vxsw

Senior Member
Dec 10, 2021
106
27
it's a madness... seems it's have an over 40k watch faces, but a lot of it are duplicated:
1668606566730.png


also cant catch annoying bug what sometimes crash application. it's even not explain problem, just "incorrect parameter" and even not show where it is\\
 

vxsw

Senior Member
Dec 10, 2021
106
27
figured out how it works, so I've rework "Investigation" section and add "Download Range" ability:
1669208892734.png

each wf have an identical pair with one bit difference in header (have no idea for why) it goes sequential.
wf'ses assigned to virtual groups if it have an only color difference (treat it as themes)
so in id range 0-100000 it have a wf'ses appropriate resolutions:
128x220 - 202 (in 46 groups)
240x240 - 3996 (in 694 groups)
240x280 - 13192 (in 1062 groups)
320x320 - 500 (in 106 groups)
356x400 - 1510 (in 252 groups)
360x360 - 13330 (in 944 groups)
360x400 - 2196 (in 178 groups)
368x448 - 8214 (in 490 groups)
466x466 - 822 (in 314 groups)
most themes presents in all resolution versions, so all of it is just ~500 items, just in variants.
in original, for all of it and only one image per id, have a 2.2gb size. I'll try to convert it in jpg and share a bit later.
 

vxsw

Senior Member
Dec 10, 2021
106
27
all the ways did not reduce total package size less than 350mb, so I'd decide to make a "preview" for groups. it's just a first image in group folder, but it's enough to make an understanding about watch face group.

WARNING - LARGE IMAGES
128x220 (46 groups) full size image (1599x744)
240x240 (694 groups) full size image (1599x9653)
240x280 (1062 groups) full size image (1599x14636)
320x320 (106 groups) full size image (1599x1499)
356x400 (252 groups) full size image (1599x3462)
360x360 (944 groups) full size image (1599x12975)
360x400 (178 groups) full size image (1599x2556)
368x448 (490 groups) full size image (1599x6784)
466x466 (314 groups) full size image (1599x4368)

to get id of watch faces of a group, use a filter in catalogue https://docs.google.com/spreadsheets/d/1IyC8AkAFiXvnO2KdXpiB8fjYtLMbtS-7JaeXZoqhXsg/edit#gid=0

also you may find all information about each watch face from server, gathered in attached 7z pack
 

Attachments

  • info.zip
    4.7 MB · Views: 52

Ashketchup96

New member
Dec 24, 2022
1
0
This is big but corresponds to a completely white 360x360 wf
Hey @the_cipo . Just like you, I have been trying to get more watch faces for my watch that uses the fitcloudpro application. I am not as technical as you guys though, but the files you shared is the first time that any watch face other than the ones given in the app has worked for my watch. I was hoping if you could share more of the watch faces available to you, and so will I, so at least we would have a bigger pool of watch faces to select from. I'll upload my set of watch faces here anyway for anyone who wants it.

Edit: Just realized, the watch faces you have uploaded are the same as the ones in my fitcloudpro app. So i guess theres no use to share them. Just wish I could get more watch faces from the server.
 
Last edited:

vxsw

Senior Member
Dec 10, 2021
106
27
TBUI editor would be published on xda a bit later. I must implement few additional functions. but if someone interesting, feel free pm to me.

and no, la10 not support TBUI format (as I know, but can't test now).
 

BRainXstorming

Senior Member
Jan 25, 2012
190
107
Gera, Germany
Hey I own a LW LA24 and the newest App is called OnWear or OneWear Pro (with google fit support)
People can Buy watches from Linwear and rebrand them even with own app. (FitcloudPro, Fitomo, ...)

Very interesting is that Zepp App said I have to use "Zepp Active" for Amazefit Pop 2. I tried Zepp Active, but the watch did nothing after scanning.

@vxsw Maybe you can create a gadgetbridge integration :D https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Home#testing-an-unsupported-device

did you LW watch need an Authkey?
 

vxsw

Senior Member
Dec 10, 2021
106
27
my la10 is already dead. so I can't write for it, at least in case I can't check what I'll do.
as I understand, you mean companion app? but I'm focused on watch face editor(s). it's more interesting for me.
also, seems gadgetbridge disigned not for cheap chinese watches. as I understood, it's for another level devices.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    hi all.
    at first, sorry for my english - it's not my first language.
    so...

    you can find a few chines vendors with identical device named as "LA10 smartwatch" (Lige even not try to naming this model - just "smartwatch"), even you may order a lot with your own logo.
    but all of it would have an identical characteristics, uses one app "ffit" and identifies via BT as "LA10_XXXX" where "XXXX" would be a last 2 bytes of a mac.
    also all of vendors use an identical promo images, so you'll easily detect it. few of it:
    1_.jpg
    18_.jpg

    as I'd understood, the original developer was a Linwear, in case "LA" seems may means "Linwear AMOLED", also Linwear have as usual description in promo images, as manual, as link to all of applications. if you'll interesting, you can learn more here https://www.linwear.com/article/1321.html
    btw. Lige have a variant with stainless steel strap (I have an exactly this).

    ok. I'll think that's enough for intro, so let's start...

    while default watchfaces with a clock hands, uploadable seems can be only a digital, or it must have a different structure. as I have no one of watchface (further "wf") with clock hands, I can talk about digitals only.
    structure is a bit easy:

    0000-0009header with bits of used options
    00A-019Fparameters of an options. every option have a personal offset and similar structure
    01A0-...graphical resources in rgb565 format (2 bytes per pixel)

    structure of a parameters are:
    2 bytesX position
    2 bytesY position
    2 bytesframe width
    2 bytesframe height (not of texture)
    1 byteframes count
    4 bytetexture offset. numerics of steps, pulse and calories have a few of offsets equal maximum possible digits, what theoretical may use different textures but with identical parameters

    while I'd investigate wf structure, I'd make a little excel with full descriptions and wf model. all is automated, all what you need, just insert a sequence of first hex-bytes 0000-01F9.
    feel free to use it if you want
    res1.jpg


    res2.jpg


    res3.jpg
    excel

    a little tool, what allow you modify wf or make your own
    I did not tried to make an integrated photoshop, so you must import/export bitmaps via clipboard.
    keep in mind:
    - a clear black (0, 0, 0) would be treated as a transparent color by your watch, while editor not support transparency.
    - all unused resources would not be saved in wf file.
    - parameters have no any correctness check (frames count for sample), so you may set any, but it may works incorrect.
    - background layer must be exactly 454x454, or it'll be looks lake a damaged. but you may disable bg layer and get just a black screen as a bg.
    - file open dialog would appear on right click of a text field.
    la10wftool_l.jpg


    la10wftool_r.jpg
    LA10WFTool.zip

    original "ffit" app will not allow you to upload any wf, so you must upload it manually.
    at first, you must enable notifications of a "00001603-0000-1000-8000-00805f9b34fb" characteristic (further "1603")
    all packets must be sent to a "00001602-0000-1000-8000-00805f9b34fb" characteristic (further "1602")
    - prepare header:
    00-02first 3 bytes are zero
    03-064 bytes of a wf file size
    07size of MTU
    08-09size of a "page"
    0Amust be = 1
    - increase MTU. in original to 244
    - split the file
    - - at first, split by "pages". in original, page size is a 4096. so you must split your file on a chunks of 4096 bytes.
    - - now split the pages on blocks with size of (MTU - 2) i.e. by 242 bytes (244-2=242). keep in mind, what last chunk in page would be a 224 byte of size instead of 242 in case 4096 mod 242 = 224.
    - - for every block, add a 2 bytes counter (starts from "01") at forward.
    now you are ready to send wf. all packets must be send at 1602, any callbacks catch at 1603.
    - send a header.
    - wait 4 changes at 1603. last two wold be a "00 00 13 00", then "00 00 12 00".
    - start sending a blocks sequentially.
    - after every 17 blocks, before sending a next, you'll must send "00 00 17" at 1602 and wait a response from 1603. usually it's a "00 00 14", but I don't check, just wait an any.
    - after sending a last part, you must send "00 00 17" for the finish.
    if all is ok, you'll see your wf else - default wf.
    of course you need an app.
    algorithm are described, so you may make your own app, or use my. but actually I'm not a programmer (just an angry customer), so don't blame me about rugged code, I write it as can. in excuse - I even never listen about kotlin before((
    so I've got an existed sample as a base and add required functional. the best way what I'll found is a "BLE Starter" of a Punch Through (team?). very thanks them for it.
    sources are here https://github.com/PunchThrough/ble-starter-android big article about BT working are here https://punchthrough.com/android-ble-guide/
    at first unbound your smartwatch in ffit. in case device may be bounded to only one app.
    - bound via app and look at 1602 characteristic. you don't need to enable 1603 manually in app, it would be enabled automatically. MTU would be set automatically too.
    - tap 1602 characteristic and chose any write method
    - in payload dialog, type just only one letter "w" (w/o quotes). tap "ok" and select your wf in open file dialog.
    - now just wait. I make it by callbacks, so process would have a long time ~15 minutes per megabyte. I'll try to rewrite it latter from callbacks to blind write (write with no response via timer), but not soon. just have no time for it now.
    bt.png


    the app BLE_Starter_base.zip
    source ble-starter-android_srs.zip

    I've finish a little tool, what allow you to discover watch faces directly on ffit server.
    at this time, it have an only 100 of different sizes. useful as resources only and editable via my LA10WFTool
    FFitWFDownloader.png

    now you can scan ffit server for watch faces by ID. it's allow you to get over 45k items, but a lot of it are duplicated. seems not compatible with la10, but may be used as resources for customizing.
    1669207557485.png

    FFitWFDownloader.zip

    I have a figured out how to send messages, so if someone interesting, I'll add later.
    also all stuff would be available at my gdrive.




    that's all. have fun. hope it would be useful for someone.


    *********
    LA10WFTool - updated (removed check for import image more than 454x454)
    *********
    LA10WFTool - minor bug fixes and ui improvement (mostly scrolls over nud's)
    *********
    16/11/22 - FFitWFDownloader
    - added "Investigation" ability, to "discover" watch faces by ID. over 45k, but a lot of duplication.
    *********
    23/11/22 - FFitWFDownloader
    - reworked "Investigation" section.
    - added "Download Range" ability.
    1
    I try to edit bin files but it's don't work.
    tbui editor not published on xda yet. as I said, I will publish it a bit later.
    as a bonus for awaiting, try this: