MetaWatch WDS111 – change boot logo

with 17 comments

I bought this Metawatch WDS111 (“Analog”) watch on a discount TI’s Back To School. I decided I will give it more thought when I have time. Yesterday I decided to take it out of the box and figure out first how to program it and find source code. So I searched quite a while and found very few information. Most modifications are on the mobile phone side (Arduino or iPhone).

ti-meta-watch-analogSome technical specifications:

  • MSP430F5438A (256Kb of flash)
  • CC2560 Bluetooth host controller
  • Vibrating motor
  • Three-axis accelerometer
  • Ambient light sensor
  • Dual OLED Displays (80×16 px)
  • Analog Hands
  • 3 Buttons

My introduction into code modification is HOW TO CHANGE BOOT LOGO.

Source code for just this model is on GitHub: Emeryth-MetaWatch-WDS111
My whole MetaWatch Dropbox repository (links, pictures, projects): (live repository)

First I tried to edit code in IAR for MSP430, but linker was throwing some errors. Then after Emeryth emailed me back I tried Code Composer Studio 5.5 90-day trial.  It WORKS! There is a lot of code. Loading it on a watch takes long time.

I searched for “METAWATCH” in files and found something interesting in Public/Aplication/OledDisplay.c

row | code
70: const tImageBuffer MetaWatchLogoBuffer;
480: DisplayBuffer((tImageBuffer*)&MetaWatchLogoBuffer);
2.714: const tImageBuffer MetaWatchLogoBuffer =

metawatch boot logo

I first partly changed code of MetaWatchLogoBuffer to 0xFF. Which resulted in boot logo change (more active pixels). I found out bits are arranged as in code comment ( little endian, col scan, preferred row, not packed)

My name in MS Paint, saved in .bmp. Next I needed a program online/installer to translate .bmp into hex code. Program on this link: BMP to PIC table for graphic LCD assembly utility does that sufficiently.  After importing image I was able to replace existing boot logo code with mine.

Oled 80x16pxAfter that I really wanted to also change bottom oled. I did that by adding 2nd const tImageBuffer MetaWatchLogoBuffer2 using it in 2nd DisplayBuffer((tImageBuffer*)&MetaWatchLogoBuffer2); I modified const 
tImageBuffer MetaWatchLogoBuffer2 similar to top oled. But something went different. Top 8 rows of logo were on botttom and bottom on top. I switched hex code, but found out that it was mirrored (turns out bottom oled is a vertically mirrored to top). Flipped image in MS Paint and also changed rows later in code and voila -> boot logo with my name on top and Hackaday’s on bottom. Changed time to boot from 2 to 10 seconds.

Youtube video of both boot logos modified:


Written by luftek

December 2nd, 2013 at 6:18 pm

Posted in Smart Watch



  1. Hackaday Links: December 8, 2013


17 Responses to “MetaWatch WDS111 – change boot logo”
Roman Sand says:

How do you think it is possible to implement Bluetooth 4.0 in firmware…

luftek says:

hm, I will be looking into this later. They state CC2560 is compatible with 4.0. I will first make standalone time, alarm, vibration, light apps. I am learning as I go. Will you join firmware development?

Roman Sand says:

I have this watch for a year, and I always wanted to start development for it…But the time is the problem, soon I will receive arduino i needed to home automation and I will need to do custom firmware for watch to use it…

Roman Sand says:

I received answer from metawatch they told what don’t support their devices and there is only 1 month warranty because they produce watch for developers. I think this is not right and the defect is in LCD that they put inside that means that their engineers don’t work so good… Personally I wouldn’t recommend
metawatch to nobody and will never buy any products from them again.

luftek says:

Sorry to hear that. I agree no/bad support, bad OLED…
Hope to get at least some functionality out of it.

Roman Sand says:

I think screen of my watch got dimmer…

luftek says:

You can change OLED illuminance level by pulling on middle button and then pressing button B (Next). This helps?

Roman Sand says:

no it doesn’t help… I see change only on first 2 levels after it remains same…

luftek says:

I watched mine under table lamp (and it seems it changes level).
You can change levels in code (OledDisplay.c)
row 200
0,32,64,96,128,160,192,224,255 //default

Roman Sand says:

I think OLED displays are dying like in old SE watches.

luftek says:

I read on some forums that OLED are a problem. Hope they last as long as possible.

Roman Sand says:

1 year from Sony Ericsson experience.

luftek says:

1 year of constant use? how much in operational hours?

Roman Sand says:

I think max 1h a day in average…Maybe less…

Tr2sa says:

A lot of time has passed, but still – did you find schematics for the hardware?

luftek says:

No. I did not find shematics. Both of OLED died. :/ I did get a refund from TI Store. Case closed :)

Leave a Reply

Your email address will not be published. Required fields are marked *