Solution for missing battery icon on Surface Book running Windows 10

Recently I got a Surface Book 2. From the beginning, my battery icon was missing, and I spent hours researching how to fix it. I didn’t even have battery show up in device manager.

To save you hours, here is the solution:

  1. Go to device manager
  2. View -> show hidden devices
    Missing battery icon on Surface Book
  3. Uninstall Surface Serial Hub Driver:
    Missing Battery Icon on Surface Book - uninstall Surface Serial Hub Driver
  4. uninstall all other devices that have warnings*
  5. reboot and wait a few minutes for missing drivers to get reinstalled

(*) – I am not 100% sure step 4 is required, but it won’t hurt and it may help.

After that you should get your battery status back:

Surface Book - battery status

It should also be visible in device manager now:

Surface Book device manager - battery status


Boogie board – notepad of the future

Are you using paper notepads to write down ad-hoc notes?

These multi page paper notebooks are super useful. You can just turn the page, save your old sketch and have clean page for new one! WRONG! This is the worst feature! You never look at these notes again, and they just pile up.

Recently, I got Boogie Board – an LCD writing tablet! It cost $20 and it changed my life.


You can sketch whatever you want, and erase with one button click. It’s like a pocket whiteboard. If something is important I just dump it to my OneNote before erasing (rarely happens). You don’t have to look for pen anymore. You have one that can be attached to the board, and you can even write with your hands (nails) on it.

I also got bigger one for in-office use. My desk before and after:

BoogieBoard - before BoogieBoard - after

Get one or big one for yourself! It will change your life!

MacBook External Display resolution problem

MacBook 3 monitors

Today I wasted 2 hours trying to adjust resolution on external monitor connected to my MacBook.

I work with two external Monitors (Sun 24″). One through miniDP/VGA, second: through USB/DVI.

Yesterday, I connected MacBook to 42″ TV, with miniDP/VGA port. Today I connected it with Sun Monitor as usual and…I got black screen. I tried to change resolution, but…1920×1200, which I am usually working with, was not available. Even more: when I set ‘Best for display’ I got 800×640! Maximum available was 1600×1200, but it was wrong ratio! The Sun 24″ monitor has 16:10 ratio, not 4:3!

I tried deleting preferences, reseting PRAM etc. It didn’t help. Finally I tried to use miniDP/DVI (instead of miniDP/VGA) and I got 1920×1200. Then, when I connected miniDP/VGA again, I got 1920×1200 as well.

What I did wrong? I connected it when MacBook was in sleep mode. That is most likely cause of the issue. Probably MacBook thought it is still connected to 42″ TV. Thus, changing port helped. Probably, if I connect it to another device, it would help as well.

In the past I already had issues when I was disconnecting monitors in sleep mode. Since that time, I was always connecting/disconnecting displays when MacBook was on. Except today 🙂

Replacement for Logitech UltraX: Logitech Wireless Solar Keyboard K750

Logitech UltraX Media Keyboard

Six years ago I purchased Logitech UltraX, which is still the best keyboard I have ever had. Unfortunately, as you know, keyboard cannot live for ever. Two years ago I wanted to buy the same model again, but…UltraX is no longer made. I was looking for some on amazon and ebay, and I found only Logitech Ultra X with PS/2. I bought it and it was fine, but I needed also PS/2->USB converter (my laptop doesn’t have PS/2 like most of laptops today). It works fine, but sometimes it loses connection. Only solution I found is to disconnect and insert it again into the USB port.

Logitech UltraX Premium

Recently I split a tea on the keyboard and keys are not working very well anymore. Thus I needed a new one. I wanted to buy the same model. It was still available on eBay, but I found this discussion, where one guy recommended Logitech K750. Its price is around $60 (too much), but I found refurbished for $30 (acceptable) and I bought it.

Logitech wireless solar keyboard k750

After a month, I can say that I am satisfied. It is wireless, but works smoothly (almost like wired). I didn’t have any communication issues so far. The cool thing is the fact that it doesn’t have replaceable batteries. It charges itself through solar panels. Additionally Logitech provides Solar App, which shows the battery condition and how much ‘light power’ is it getting from the light/sun. The two screenshots below shows Solar App when light is turned on (left) and turned off (right).

Logitech Solar AppLogitech Solar App - Light Off

The most important capability: keys. They are nice, low profiled, but a bit loose and loud. It doesn’t bother me though. I can say that K750 is a one class lower than Apple Keyboard, which I was using for 2 months in last summer (working on Mac). I would purchase Apple keyboard (better keys), if it would have ‘Windows’ version. For now, I am satisfied with K750.

If you are looking for UltraX-like keyboard, then K750 is definitely worth to consider!

FreeRTOS Jump Start

In this semester I am taking Real-Time Systems course. In one of the programming assignments, we had to develop program for embedded device Tiva C Series LaunchPad TM4C123G. It is a low-cost evaluation platform for ARM Cortex-based microcontrollers from Texas Instruments. It is very nice board if you want to start with embedded devices. It cost only $25 on eBay. You can connect it to your computer using USB. Finally, the board has key feature of embedded device for beginners: the LED.

Tiva LaunchPad

A typical process-control system can be divided into four types of components: the process, sensors, actuators, and controller (see Figure below). LED allows you to mock your target actuator. Majority of operations performed by embedded devices is control of the actuators. What is nice about LED: it is cheap and easy to control whether and how it is working.

safety critical loop

Code Composer Studio

As a development environment for Tiva C Series I recommend you Code Composer Studio. It is Eclipse based IDE, which makes development easy. Especially for beginners. Tutorial for installation and running first program on Tiva TM4C123G board using Code Composer Studio can be found here. I recommend to follow the “Single Download” option (download 1GB+ file). More precisely, download and install: “EK-TM4C123GXL-CCS: TivaWare for C Series and Code Composer Studio for the Tiva C Series TM4C123G LaunchPad” available on this website. I wasted a lot of time trying to install it following “Individual Downloads” instructions (download <1MB file). Installer was hanging, when it was downloading files form the Internet and never recovers. In "Single Download" most of files are already downloaded along with the installer.


FreeRTOS is one of the most popular Real Time Operating Systems (RTOS). Additionally, it is free. This is where its name comes from (free + Real Time Operating System = FreeRTOS). The System is written in C language. Thus, we write programs for it in C as well. More details can be found on freertos.org and wikipedia.

The cool thing about FreeRTOS is that it enables easy modifications of Operating System. You can modify e.g. scheduler.

Once you have Code Composer installed. You need to install TivaWare software (which includes FreeRTOS). It can be found in previously downloaded package (if you were following “Single download” option) in TivaWare/SW-EK-TM4C123GXL-1.1.exe.

Running example programs

The TivaWare software contains examples, which are ready to run. You can find them in the directory, where you installed TivaWare C Series software. In my case (default path) it is: C:\ti\TivaWare_C_Series-1.1\examples.

There is an example project freertos_demo. It makes the LED blinking and allows you to manipulate the colors using buttons (located at the bottom of the board). The project can be found in examples\boards\ek-tm4c123gxl\freertos_demo. It is ready to run. You just need to connect the board to the PC, open the project (import it) in Code Composer Studio and run it in debug mode. Code Composer Studio will automatically port the program into the board.

You can modify the code, and make the LED blinking faster or slower. Colors manipulation is also easy.

Queues and semaphores

FreeRTOS supports multitasking. In the Real-Time systems, communication between different tasks are usually implemented using queues and semaphores. It is also the case in freertos_demo program. Buttons send messages to the LED using queues. Semaphores are use to guard concurrent access to UART.

This tutorial is very good point to start with FreeRTOS. It describes basics, queues, semaphores and more.


Developing code for embedded devices is usually, more complex than for Web or Desktop. Running, even very simple application is more complex, because it requires more steps. You need to configure connection between your computer/OS and specific device. Then you need to setup many settings, which varies almost among every device. The communication with ports is also different and every device has different set of them.

There are no universal installers etc. Every single device require slightly different setup. Sometimes, you need to spend hours to run simple “Hello, World!” application. On the other hand, it is fun to create some system, which do stuff outside of your PC.

If you are interested in embedded devices, check out my other post: BeagleBoard – your personal computer smaller than your wallet.

To get started with FreeRTOS and Tiva C Series: check this tutorial to run first program and FreeRTOS Tutorial to get more details. You can buy Tiva C Series LaunchPad on eBay.