Xiaomi Xiaofang Smart Camera Setup

I recently bought the Xiaomi Xiaofang Smart Camera and here’s how I set it up:

1. Make sure your phone is connected to the internet and GPS is turned on (it asks for location services to be enabled which includes GPS)

2. Download the Mi Home app from your phone’s app store

3. Accept the terms and conditions for the app

4. Select the first locale (or server) in Chinese, which I believe is Mainland China. If you select the US server then it will not connect properly.



5. You need to sign in with your Mi Account.

Create a Mi account or sign in with your existing Mi account.
NOTE: Other sites are saying that you need to create a Mi account without connecting it to any social media network.


6. Tap on My Devices and then tap on Add Camera Products. Tap the highlighted icon,


7. Press the Setup button on the camera and wait the camera light to flash yellow and say something in Chinese. After you hear it, tap on “Wait until you hear a prompt” and then tap Next.


8. Tap on Tap to select Wi-Fi and you will see a list of Wifi access points your phone can see. Select the Wifi access point you wish to connected it.

NOTE: it will only work with 2.4 Ghz access points


9. Enter the username and password for the Wifi access point.


10. Hold the camera and point it to the QR displayed on your phone. If it works the camera will say something else in Chinese and then the camera light will flash blue.


11. It will now connect to the camera.


12. If it all works then you should see this.


13. Tap on a device location and tap Next.

14. On the main screen of the app you should see your new camera.

15. Tap the camera icon and you should see this.

16. Voila! 🙂



Raspberry Pi Camera Server

It’s so easy to set up a Raspberry Pi Camera Server because of RPi-Cam-Web-Interface. I’m using these materials;

  • Raspberry Pi Zero W with Jessie Lite
  • Raspberry Pi NoIR Camera Board, Version 2
  • Raspberry Pi Zero Camera Adapter (this is required because the camera port on the Raspberry Pi Zero is smaller compared to the camera port on the Raspberry Pi 2 or 3)

Here are the steps:

  1. Prepare a new Raspberry Pi with Raspbian
  2. Make sure it’s connected to a network and you can ping it from your computer
  3. Confirm that the camera is working, run this command you should see the live video for 6 seconds. If this works then proceed to the next step. Otherwise fix this first.
    raspistill -v -f -vf -t 6000
  4. Run these commands to install the RPi-Cam-Web-Interface:
    sudo apt-get update
    git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.gitcd RPi_Cam_Web_Interface
    chmod u+x *.sh
  5. From your computer, go to (IP is your Raspberry Pi’s IP)
  6. Voila!

Upgrade Windows 10 Home to Professional on a Dell laptop

I have a Dell XPS laptop and it came with Windows 10 Home installed. I had a Windows 10 Professional license tied to my Microsoft account.  I wanted to upgrade my Home installation to a Professional installation, here’s how I did it:

UPDATE: The following steps did not work as I had hoped. It didn’t not accept my other Microsoft account’s Windows 10 Pro license. I ended up buying the Windows 10 Pro license from Play-Asia for very cheap. I still went through steps 1-5 and then I entered the new Windows 10 Pro key. And it didn’t work! I ended up calling Microsoft and activated it over the phone. And done! 🙂

  1. Open Windows 10 Settings and go to activation
  2. Click on Product Key and use this one VK7JG-NPHTM-C97JM-9MPGT-3V66T. (This is a generic Windows 10 Professional key, it will simply allow you to perform the upgrade)
  3. Perform the upgrade
  4. After restart, Windows will ask for activation
  5. Open Windows 10 Settings and go to activation
  6. Click on Troubleshoot
  7. Click on “I recently changed hardware on this device” and select the license from the Microsoft account
  8. Sign in to your Microsoft account (the one with the Windows 10 Professional license) and voila!

Raspbian (PIXEL) with SDL2 (compiled from source)

Here are the instructions to (re)installing SDL2 on Raspbian by compiling from source.

sudo apt-get remove --purge libsdl2-dev
sudo apt-get autoremove
sudo apt-get install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev libsndfile1-dev libudev-dev libasound2-dev libjpeg-dev libtiff5-dev libwebp-dev automake
sudo apt-get install libraspberrypi-dev raspberrypi-kernel-headers
mkdir build && cd build
wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz
cd SDL2-2.0.5
./configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl
sudo make install
sudo ldconfig

Hooray! SDL performance is much much faster! 🙂

SOURCE 1: https://solarianprogrammer.com/2015/01/22/raspberry-pi-raspbian-getting-started-sdl-2/
SOURCE 2: http://choccyhobnob.com/tutorials/sdl2-2-0-5-on-raspberry-pi/


Eclipse (Neon.2) and SDL2

After much trial and error, here are the instructions to using Eclipse and SDL2:

  1. Download and install Eclipse Neon.2 for C/C++
  2. Download and install MingW
    1. Install to C:\Mingw\
    2. In the bin folder, copy gcc.exe and rename it to mingw32-gcc.exe
  3. Download SDL2 MingW version and unzip to C:\SDL2
  4. Add C:\mingw\mingw32\bin to your PATH
  5. Copy SDL2.dll to C:\Windows\SysWOW64 if running 64-bit or C:\Windows\System32 if running 32-bit
  6. Run Eclipse
  7. Create a new C project and select MingW toolchain
  8. Add a new C source file and add this code
    #include <SDL.h>
    int main (int argc, char** argv) {
     // Create window
     SDL_Window* window = NULL;
     window = SDL_CreateWindow ( "Hello World!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
     // Setup renderer
     SDL_Renderer* renderer = NULL;
     renderer = SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED);
     // Set background color to red
     SDL_SetRenderDrawColor( renderer, 255, 0, 0, 255 );
     // Clear window
     SDL_RenderClear( renderer );
     // Create a square at ( 50, 50 ) with 50 width/height
     SDL_Rect r;
     r.x = 50;
     r.y = 50;
     r.w = 50;
     r.h = 50;
     // Fill square with blue color
     SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
     SDL_RenderFillRect( renderer, &r );
     // Draw everything to screen
     // Wait for 5 seconds
     SDL_Delay( 5000 );
     // Close window and exit
     return EXIT_SUCCESS;
  9. Add “C:\SDL2-2.0.5\i686-w64-mingw32\include\sdl2” to the Project “Include”
  10. Add “C:\SDL2-2.0.5\i686-w64-mingw32\lib” to the Project “Library Paths”
  11. Add “mingw32, sdl2main, sdl2” (in that order) to the Project “Libraries”
  12. Compile and run! 🙂

Samsung SSD

The SSD I bought is a Samsung 850 EVO and it appears to be very fast. Make sure you install Samsung Magician software. It’s a nice tool for benchmarking and optimizing your SSD. All those optimizations that I mentioned in my previous post which I did manually, you can do that from the Magician.

Here is a screenshot of my benchmark:

SSD Benchmark



Freematics Telematics Kit #1 – Not so cool!?!?!

It was working for a while. I decided to tidy it up and use a breadboard. After plugging into the breadboard I tried to download a different program into the Nano, which worked. At some point the Nano’s driver in Windows stopped working. So I installed this http://www.ftdichip.com/Drivers/CDM/CDM%20v2.12.06%20WHQL%20Certified.zip. This also worked for a while. The next day it wouldn’t connect 😦

Everytime I tried to upload it would fail with “…avrdud…not in sync resp=0xca”. I eventually found this http://forum.arduino.cc/index.php?topic=73748.0 which provides instructions to test the board by performing a loopback test. I did that and the return from loopback test was “NON GENUINE DEVICE FOUND!”. Just great 😦

Update 1:
Here are the steps to fix it:
1) Follow http://electropit.com/index.php/2015/09/06/arduino-nano-v3-0-clones/. When it talks about burning the bootloader then follow http://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/?ALLSTEPS
2) Install the Arduino USB drivers from C:\Program Files (x86)\Arduino\drivers\

And it works again! 🙂

The moral of the story? Buy genuine or buy compatible boards from a reputable source such as Core Electronics.