Use a Waveshare thermal camera on Android with no app
This page shows a live heatmap from the Waveshare Smartphone IR Thermal Imaging Camera (B). It runs in Chrome on Android. You do not install an app and you do not make an account.
The Waveshare camera uses an 80x62 SenXor sensor from Meridian Innovation. This page is an unofficial viewer. It has no connection to Waveshare or Meridian Innovation.
How to use the viewer
- Close the SenXor app if it is open.
- Unlock the phone and connect the camera to the USB-C port.
- If Android asks which app to open, close that dialog.
- Open this page in Chrome.
- Push Connect, select "USB Virtual COM" in the list, and push Connect in the dialog.
After the first connection, Chrome can connect the camera again when you load the page. The Rotate and Flip buttons change the image direction. The page keeps your choice on the phone.
What the heatmap shows
- A live image in the ironbow palette. Dark colors are cold and bright colors are hot.
- The temperature at the center of the image, at the cross.
- The minimum and maximum temperature in the image, in degrees Celsius.
The color range changes with each frame to fit the minimum and maximum temperature. Thus, the same color can show a different temperature in a different frame. Read the numbers when you must compare two scenes.
The sensor reads infrared radiation from surfaces. Shiny metal and glass can give incorrect values.
Supported cameras, phones, and browsers
- Tested: Waveshare Smartphone IR Thermal Imaging Camera (B), USB ID 0416:b020, on a Pixel 11 Pro with Android 17 and Chrome 156.
- Not tested: other cameras with an 80x62 SenXor sensor and other Android phones. They can work if they use the same USB protocol.
- Not supported: iPhone, Firefox, and Safari, because they do not have WebUSB. SenXor sensors with a resolution other than 80x62 also do not work.
- Computers: not tested.
Troubleshooting
The camera is not in the list
Unlock the phone. Disconnect the camera, turn the plug 180 degrees, and connect it again. Then reload the page.
Nothing happens after I push Connect
Make sure that you selected "USB Virtual COM". Reload the page and try again. Do this only after you close the SenXor app.
The page shows "No frames from the camera"
The page sends the start command again every two seconds. If frames do not start, disconnect the camera and connect it again.
The image is upside down or reversed
Push Rotate and Flip until the image matches the scene. Together, the two buttons give all eight image directions.
Questions
Do I need the SenXor app?
No. This page reads the camera directly.
Why can a webcam app not read this camera?
The camera is not a UVC webcam. It is a USB serial device that sends temperature frames. Webcam apps do not read that format.
Does the image go to a server?
No. The page reads the frames in your browser. The page does not send them to a server, and it has no analytics.
Is the viewer free?
Yes. The viewer is open source under the Apache 2.0 license.
How it works
Chrome on Android gives web pages access to USB devices with the WebUSB API. The page opens the camera as a USB serial device at 115200 baud and sends a command to start the stream. Each frame has 4960 16-bit values in deci-Kelvin. The page changes them to degrees Celsius and draws them on a canvas. The protocol comes from pysenxor-lite, the Python library from Meridian Innovation.
The source code is on GitHub.
Made by James Nolan.