ubpulse H3

Featured ubpulse H3


Featured ubpulse H3

Featured ubpulse H3


  • Autonomic Nervous System (ANS) Monitoring by Heart Rate Variability (HRV) Analysis.
  • Auto Quick ANS Checkup (insert finger and just wait one minute).
  • Built-in monitor shows ANS reports.
  • ANS reports display  both numeric numbers and clinical standards (normal or abnormal, high or low).
  • PPG. Optical Measuring Heart Beat.
  • Heart Beat Sound by Internal Speaker.
  • Battery Powered. ( AAA size  x 2 )
  • All in One System.
  • Medical Certified.

For Application Developer

  • Connectivity. Bluetooth, USB HID
  • Real Time Communications for Developing Custom Applications.
  • Data Communication is in Compliance with LXSDF T2.

All in Onen


Function Block

Heart Beat. Optical Measuring

Heart beat and blood volume

  1. The heart pumps blood around the all of the body.
  2. The blood volume at finger is synchronized with heart beat (fig. a).
  3. At each heart beat, the blood volume is increased and then decreased ( fig.b).
  4. If we can measure the blood volume changes, the heart beat can be measured.


Optical measuring heart beat

  1. The light from the light source (fig.a) is absorbed by tissue, bone, venous blood and arterial blood.
  2. The light absorption is in proportion to arterial blood volume (fig.b).
  3. The output of the light detector shows the blood volume changes synchronized with heart beats (fig.c).
  4. Usually, the measured AC component is named by pulse wave or PPG (Photo Plethysmo Gram).

Autonomic Nervous System Measuring

Principles. Autonomic Nervous System  Measuring.

  1. Sympathetic and para-sympathetic regulates the heart beat intervals individually.
  2. In time domain, sympathetic and para-sympathetic are overlapped in measured heart beat intervals.
  3. ubpulse H3’s internal LX HRV(Heart Rate Variability) algorithm separating the sympathetic and para-sympathetic in frequency domain.
  4. Finally, ubpulse H3 reports show the ANS activities with clinical standards.



  • Bluetooth Profile : SPP ( Serial Port Profile )
  • It’s easy to program with host side serial port access.




  • USB Class : USB HID (Human Interface Device).
  • It’s not need to install the device driver manually.
  • All OS(windows, linux, android,.. ) supporting the USB HID device driver by default.





 Sensor  Light Sensor
 Measuring duration  1 minute
 측정데이터 표시  측정화면  실시간 심박수, 남은시간표시바, 맥파파형,

 심박음유무, 전지잔량, Bluetooth상태,

 USB상태, 심박표시바, 혈류지수표시

 ANS Balance  SNS Act. and PSNS Act. 막대그래프로 표시
 SNS : PSNS  SNS : PSNS 비 결과값 표시
 SNS Act.  2.0 ~ 9.0 msec^2
 PSNS Act.  2.0 ~ 9.0 msec^2
 ANS Activity  20 ~ 80 (nu)
 HRV Index  2.0 ~ 33.0
 Histogram  X축 : 평균심박수

 Y축 : 발생빈도

 데이터 항목 및 값의 범위  HR (Heart Rate)  30 ~ 240bpm (30 ~ 160 ± 1bpm, 161~240, ±3bpm)
 PI (Perfusion Index)  0.1 ~ 20% (±10%)
 SNS Act.

 (Sympathetic nervous  System Activity)

 2.0 ~ 9.0 msec^2
 PSNS Act.

 (ParaSympathetic nervous System Activity)

 2.0 ~ 9.0 msec^2
  ANS Activity

 (Autonomic nervous System Activity)

 2.0 ~ 9.0 msec^2
 SNS : PSNS  20 ~ 80 (nu)

 (Heart rate Variability-Index)

 2.0 ~ 33.0  
 ADC Resolution  12 bits
 Sampling Frequency  256Hz
 Power  Battery or USB bus power
 Battery  AAA 1.5V x 2ea
 Battery life  up to 6 hours

 (Bluetooth paired and continuous operation)

 Current consumption  100mA at 3V (Bluetooth paired, finger out)

 110mA at 3V (Bluetooth paired, finger in)

 Dimension  37mm x 67mm x 36mm (width x length x height)
 Weight  38g (no battery)

 61g (include battery)

 Housing material   ABS (acrylonitrile butadiene styrene copolymer)
 Interface  Bluetooth, USB
 Display  Graphic OLED, 64×128 pixel, yellow-blue 2color
 Sound  Operation effect and heart beat sound from inner specker
 Bluetooth  Bluetooth version  Bluetooth Spec. V2.0 EDR (Enhanced Data Rate)
 Class  Class2
 Profile  SPP (Serial Port Profile)
 Pairing Password  1234
 Serial Port Setting  Baud Rate : 115,200 bps

 Data bits : 8 bit

 Stop bit : 1 bit

 Parity : None 

 USB  USB version  USB 2.0 full speed
 Function  HID (Human Interface Device)
 Device driver  USB HID (OS included)
 Light wavelength  940nm (Infrared)
 Light noise immunity  Light noise is minimized using ELP(Environment Light Protection)   Technology.
 Heart Beat Detection Method  High precision Peak Detection from 2nd Derivatives of PPG
 Clock for Heart Beat Interval Measurement  The time interval of heart beat is measured by high precision clock.

 Clock Resolution : 0.000976 sec.

 Clock Accuracy : 0.002%

 – The clock is divided by 32 from main clock.

 – Main clock : 32.768k HZ Quatz Crystal Oscillator with accuracy :  ±20ppm (0.002%)

 Environment Requirements  Operation temperature  -20 ~ 60 ℃ (Humidity : -30 ~ 80%RH)
 Storage temperature  -40 ~ 70 ℃ (Humidity : -20 ~ 90%RH)



Medical Certification

ubpulse H3  is  approved as a  medical device. It can be used as medical purposes.

 ubpulse H3 KFDA Medical Device Certification. download or view online.



Usages. ubpulse H3

Quick ANS Checkup.


Insert finger into the ubpulse H3, just wait one minute, that’ all. It proceeds automatically.

Step 1. Press the button power on.

Step 2. Insert finger into ubpulse H3 and wait one minute.

Step 3. ubpulse H3 shows the ANS analysis reports.


ANS analysis reports type.

  • ANS balance
  • Activities of SNS, PSNS and ANS.
  • Histogram of heart rate and HRV Index.

Terms on ANS reports.

  • ANS : Autonomic Nervous System
  • SNS : Sympathetic Nervous System
  • PSNS : Para Sympathetic Nervous System
  • HRV : Heart Rate Variability


Usage video. It’s so simple


Quick Guide

 ubpulse H3 Quick Guide. download or view online.


ubpulse H3 built-in monitor (OLED) displays all informations about measuring and ANS reporting.




Display - Clinical Standard


  • ubpulse H3 reporting display shows the both numeric value and clinical standard.
  • The arrow indicates the ANS activity is normal or abnormal , high or low on the clinical standard bar.
  • It’s easy to check nervous system activity is normal or abnormal, high or low.
  • The following image’s report show the PSNS activity is abnormal high and the others are normal.



Developer Guide. Bluetooth Communication

ubpulse H3  communication formats are fully opened.  You can make your own applications with medical quality heart rate, analysed results of ANS(autonomic nervous system), and all of data from the ubpulse H3.

The ubpulse H3 has all the necessary circuitry for measurement of pulse wave (PPG, PhotoPlethysmoGraph) in the sensor and all necessary elements for measuring such as digital processor, speaker, OLED display, power supply, and all measurements and autonomic nervous test procedures are done automatically. By recognizing the state of the finger placed on the sensor, the optimum measurement setting is performed automatically, and continuous measurement, digital signal processing and data transmission are performed. ubpulse H3 can transmit both measurement data and inspection result data to the host side.


Available host device to communicate with ubpulse H3.

The ubpulse H3 supports communication via the Bluetooth (SPP) interface and can also be connected to a smart phone or a general PC equipped with a Bluetooth dongle via a Bluetooth connection.
cautions – Smartphone needs to support Bluetooth profile SPP for communication connection.Most of the latest Android phones support Bluetooth SPP. Not all products from Apple are capable of communicating with devices because Bluetooth SPP is not supported.


ubpulse H3 is recognized as a serial port on the host device.

Since the Bluetooth uses the SPP profile, it is automatically recognized as a serial port (com port) on the host device. On the communication software side, the device connection establishes com port communication, and communication with the device is started.

It is possible to develop an app in all development tools  that can COM port communicate.

Tools examples.

  • SmartPhone : Android Studio, Eclipse etc.
  • Windows PC : MS Visual Studio(C #, C ++, Basic, etc.),Python, Delphi, Java, LabVIEW, MATLAB, etc.

Documents for App. Developer

 ubpulse H3 Communication Spec. for Real Time Measuring.  download or view online.
 ubpulse H3 Communication Spec. for HRV Analysis. download or view online.

LXSDF T2 Based Communication.

The LXSDF T2 format is used as the data format for Bluetooth serial communication of ubpulse H3 and LXSDF T2 describes the arrangement of data generated in ubpulse H3.

LXSDF T2 (LX Serial Data Format T2) is a communication standard with an extremely simple and easy to use.

Full documentations for LXSDF T2 : http://laxtha.net/lxsdf-t2

Real Time Measuring Data Communication


The raw PPG waveform data and heart rate per minute calculations are digitized and stored in ubpulse H3. It is possible to transmit in real time to the host device via Bluetooth. It can be connected to any device that supports Bluetooth SPP (Serial Port Profile), and it can utilize person’s PPG measurement information on smartphone, tablet, PC. Developers who have introduced ubpulse H3 are working part of the development program to open the serial port and receive data from the device.

 LXE13. ubpulse H3 Communication Spec. for Real Time Measuring.  download or view online.

HRV Analysis Data Communication


ubpulse H3 can be used for HRV inspection, the inspection is started by the start command at the host side or auto started by the device, and when the inspection is completed, the signal processing process is performed in the device, and the final inspection result data is transmitted through the serial communication.


When the user places a finger on the ubpulse H3, the device detects it and achieves the optimum signal measurement condition in the automatic setting process which takes about 3 seconds. After 3 seconds, the device will automatically enter the inspection mode by itself. If the blood flow of the user is abnormally small in the inspection mode, the inspection is automatically stopped before one minute is completed, and the result of the “low blood flow determination” is displayed.
If the user moves his or her fingers heavily during the measurement, the inspection will start again from the beginning.
If there is no serious “abnormal low blood flow”, the inspection is stopped at 1 minute after the normal time, and then the “low blood flow” is judged again. In the case of low blood flow, the result of “low blood flow judgment” is presented. If the blood flow is not low, the “abnormal heart rate” is determining. If the “abnormal heart rate” is abnormal, the “abnormal heart rate” is expressed. And arrhythmia are the most common causes of abnormal heart rate, and HRV analysis can not be applied when there is such an abnormal heart rate.
HRV analysis is performed when there is neither low blood flow nor abnormal heart rate, and the final analysis results are summarized and expressed.

 ubpulse H3 Communication Spec. for HRV Analysis. download or view online.

Programming Guide

The following picture shows the programming flow of host side.

First of all, open com port in host. After that,

  1. Read bytes from COM : Read bytes received from com port(UART) in order.
  2. Extract T2 Tx packet : Catch “SyncBytes” (it is placed in order of 255,254) which means packet’s start spot from byte row separates data up and then abstract data elements in the packet from
  3. Get T2 Tx elements : Get all the T2 Tx packet elements.
  4. Get device providing data : Data allocation situation depends on each device. Refer to LXSDF T2 Device Specialization Documents of the device.

The following picture shows the whole program structure of host side.


Code Example. T2 Tx packet extracting & T2 Tx elements taking.

This code shows the example of  processing code of phase 2 and 3 in the picture. (C#code). This example just use simple general function so coding method is the same regardless of the language.

        // transmit the data received by serial with the function by 1 byte  in order .
        // processing  in the function : Find the sync spot and abstract data by each packet TX Index .
        bool Sync_After = false;
        byte Packet_TX_Index = 0;
        byte Data_Prev = 0; // PREVALUE
        byte PUD0 = 0;
        byte CRD_PUD2_PCDT = 0;
        byte PUD1 = 0;
        byte PacketCount = 0;
        byte PacketCyclicData = 0;
        byte psd_idx = 0;

        int Parsing_LXSDFT2(byte data_crnt)
            int retv = 0;

            if (Data_Prev == 255 && data_crnt == 254)// Found sync spot.
                Sync_After = true;
                Packet_TX_Index = 0;                  // Initialize  packet  TX Index  0.
            Data_Prev = data_crnt;                   // receive the present value as pre value.

            if (Sync_After == true)                  // only task after discovering sync.
                Packet_TX_Index++;                    // increase TX Index 1. The spot where is discovered 254 is 1. Whenever receiving 1 byte as serial, it increases 1.
                if (Packet_TX_Index > 1)              // only task over TX Index  2.
                    if (Packet_TX_Index == 2)            // occupied TX Index2 PUD0.
                        PUD0 = data_crnt;
                    else if (Packet_TX_Index == 3)       // occupied TX Index 3 CRD, PUD2, PCD Type 
CRD_PUD2_PCDT = data_crnt;
                    else if (Packet_TX_Index == 4)       // occupied TX Index 4  PC. 
                        PacketCount = data_crnt;
                    else if (Packet_TX_Index == 5)       // occupied TX Index 5  PUD1.
                        PUD1 = data_crnt;
                    else if (Packet_TX_Index == 6)       // occupied TX Index 6 PCD(Packet cyclic data) .
                        PacketCyclicData = data_crnt;
                    else if (Packet_TX_Index > 6)        // Stream data(wave-pattern data) enters one each in order in more than TX Index 7. the data procedure to receive ->  it is recorded in order of Ch 1 high byte , Ch 2 high byte low byte..
                        psd_idx = (byte)(Packet_TX_Index - 7); // Packet Stream Data arrangement Index.
                        PacketStreamData[psd_idx] = data_crnt; // crnt data is occupied in order and stream data is only occupied.
                        if (Packet_TX_Index == (Ch_Num * 2 * Sample_Num + 6)) // Channel number  x 2( 2bytes occupation) x Sample capacity + 6(Index value before the front section of wave-pattern data) is the end of one packet.
                            Sync_After = false; // Be false to search sync spot again.
                            retv = 1; // If Passing of 1 packet unit is finished, it will be returned.
                } //if (Packet_TX_Index > 1)

            return retv; //If 1  packet is finished, others return 0.


COM port auto search

This explanations are for the device search in case device like PC. The PC attached device’s com port number assignment is not fixed. If connecting MCU and UART in Embedded System,  it doesn’t need automatic search.

In case of device detecting COM port from host, there is case that user choose COM port to communicate in application program. This means bad products design regardless of user’s convenience. It has to be designed that the program search COM port connected with device automatically. This function can not be solved only by software. It has to set the function to search automatically in the device.

COM port searching method

In LXSDF T2 Tx packet,  PCD “Com port search information” which is PCD[31] and  “LXDeviceID” which is  PCD[30] is used to find proper COM port of the product for information to use device search.

You can find the device’s COM port easily if practicing the procures as the following explanation cycling all the Com port from host in order. Open one COM port temporarily and process the data received like the following table.

 Flow Chart  Steps.  Description
 Step 1. If 254 is detected next to 255 :  It’s possible device to communicate. Goto step 2.

If 254 is not detected next to 255 : it’s not  LXSDF T2 Tx packet. Start again opening another COM port.

 Step 2. If PC (PACKET COUNT) value becomes number 31, it is sure of the device transmitting data to LXSDF T2 Format. However, it could transmit the same format data like LXSDF T2 in some products coincidentally. For occupying safely, if the PCD[31] is 108, it is sure that is LXSDF T2  Tx packet.
 Step 3. If device is communicated by LXSDF T2 Tx format, the next phase is to search device to communicate. At this time, check PCD[30] which is product’s LXDeviceID to communicate.


Code Example : COM port automatic search. C#

Automatic search method to find the device. The method is the same regardless of language whether it is C# or C++.

            int bytestoread = sp.BytesToRead;   // occupied  byte number in Com port buffer. Sp is serial port object.

            // OUTPUT 1. Whether it is our device or Not? Our device must have the data in COM port..
            if (bytestoread == 0) { return; }  // If there is no data which can  be read in  COM port, this is not  LXSDF T2 format. LXSDF T2 transmits the data every time.

            /// If there is some data to read in COM port, it reads all the data. 
            byte[] rbuf = new byte[bytestoread]; // created the memory size dynamically. 
            bool find_sync = false;
            sp.Read(rbuf, 0, bytestoread); //  received in rbuf tentatively..
            // OUTPUT 2. Check sync .
            for (int i = 0; i < bytestoread-1; i++) // 
                if (rbuf[i] == 255 && rbuf[i + 1] == 254) // Found the sync spot. 
                    find_sync = true;
                    break; // break the loop 
            if (find_sync == false) return; // If there is no data in order of 255, 245, this is not  LXSDF T2. 
            ///OUTPUT 3. Check the packet cyclic data in case of detecting some sync.  Must receive over certain time data continuously to check it.
            byte[] cbuf = new byte[4096];
            int bytetoreadlimit =0;
            int readbytenum = 0;
            int sum_readbytenum = 0;
            bool while_continue = true;
            byte Packet_Count =0;
            byte PacketCyclicData = 0;
            bool find_108 = false;
            byte find_ComDeviceID = 0; // ComDeviceID allots more than value 1.
            byte find_NumChannel = 0;
            byte find_NumSample = 0;
            byte find_firmversion = 0;

            while (while_continue)
                if(sp.BytesToRead > 4096)
                    bytetoreadlimit = 4096;
                    bytetoreadlimit = sp.BytesToRead;
                readbytenum = sp.Read(cbuf, 0, bytetoreadlimit); // read the data and figure the byte cumulative sum.
                sum_readbytenum += readbytenum;
                for (int i = 0; i < readbytenum-3; i++)
                    if (cbuf[i] == 255 && cbuf[i + 1] == 254) // detected sync spot.
                        Packet_Count = cbuf[i + 4];           // occupied packet count value.
                        PacketCyclicData = cbuf[i + 6];       // occupied packet cyclic data.


    if (Packet_Count == 31 &&  PacketCyclicData == 108)// If packet count is 31 and packet cyclic data is 108, it is surely  LXSDF T2 Type.
                            find_108 = true;
                        else if(Packet_Count == 30)                      // This spot  is for Product ID.
                            find_ComDeviceID = PacketCyclicData;
                        else if (Packet_Count == 29)                     // This spot is for firmware version number. It is necessary if updating firmware by UART.
                            find_firmversion = PacketCyclicData; 
                        else if (Packet_Count == 28)                     // Channel number transmitted into stream data.
                            find_NumChannel = PacketCyclicData;
                        else if (Packet_Count == 27)
                            find_NumSample = PacketCyclicData;

                        if (find_108 && find_NumSample > 0)  // This means loof break because  find_NumSample is in packet count 27 and  find_108 is in packet count 31. If both value were found , Medium value could be found.
                            while_continue = false;
                /// Designate the maximum value to review how many data can be received in COM port.  If this value is too big, it takes very long time to search the device. So it’s good to set the small value.
                /// To search the device by LXSDF T2 type , The minimum needed data capacity  must  be  at least 32 packets. In other words, 68bytes ( byte capacity of 1 packet) x 32 = 2176 bytes.  It’s possible to exam device search information because it has 3000 bytes enough to be 32 packets.
                ///   Formula : byte capacity of 1 packet  can find the answer as 8 bytes + 64 bytes .
                /// 8 bytes : 1 packet is 8 bytes  from Tx Index 0  to 6 
                /// 64  bytes :  Stream area is  channel number * 2(bytes) * sample number, though it has different value by each product . Because the maximum channel number allotted from LXSDF T2 is 8 and sample number is within 4, the maximum  is  64 bytes.
                /// x 32 : must receive 32 packets to communicate packet count 0 to 31.
                if (sum_readbytenum > 3000)  // Forcing  Loof  break condition. 
                    while_continue = false;
            } // while



Developer Guide. USB Communication


  • USB Class : USB HID (Human Interface Device).
  • It’s not need to install the device driver manually.
  • All OS(windows, linux, android,.. ) supporting the USB HID device driver by default.





In some cases, USB host device’s  electrical noise is very large and the electrical noise inpour into ubpulse H3 via USB cable. In that case, the measured results are not reliable.

ubpulse API for Windows. LXSMWD12


LXSMWD12 system architecture.


  • ubpulse API for Windows.
  • API type : DLL (Dynamic Link Library).
  • DLL name : LXSMWD12
  • API Making tool : Visual C++ 2010 win32 API DLL project
  • Supporting platform : 32bit / 64bit
  • Supprting OS : Windows 10,  8.1, 8, 7.
  • Recommended IDE for developing the application program :  Visual C++ all version. 6.0, 2010, 2015, 2017, 2019.
  • Release Version : 1.3 (2020-01-27)


Developer Manual

 LXE33. LXSMWD12 Developer Manual.  download or view online.


Getting started with LXSMWD12

step1. Download , unblock and unzip

 LXSMWD12.zip download.  (32bit, old version Visual C++ 6.0 , not recommended)

 LXSMWD12_32bit.zip download.  (32bit, new DLL rebuild by Visual C++ 2010 )

 LXSMWD12_64bit.zip download.  (64bit, new DLL rebuild by Visual C++ 2010 )

Notice. You should unblock the zip file , after unblock the zip file and then unzip the file. Please check the following video. This video shows download, unblock and then unzip.

step2. Copy files to your project folder

files  copy to 
  • LXSMWD12.dll
copy to the same folder which contains your application exe file.
  • LXSMWD12.h
  • LXSMWD12.lib
copy to your application project’s source folder.


step3. Importing DLL

In your Visual C++ source file, add the codes for implicit linking the library and include the LXSMWD12.h

#pragma comment(lib,"LXSMWD12.lib") // DLL implicit linking

#include "LXSMWD12.h"

That’s all, now it’s ready to use all functions and message from LXSMWD12.


Visual C++ project sample source.

Simple Visual C++ 6.0 project source codes. You can check how to use LXSMWD12 DLL.

Download TEST_LXSMWD12

 TEST_LXSMWD12.zip  download. (Visual C++ 6.0  project source , only 32bit application)

 TEST_LXSMWD12_VC2017_32_64.zip  download. (Visual C++ 2017 project source, both 32bit and 64bit available)

Notice. You should unlock the TEST_LXSMWD12.zip , after unlock the zip file and then unzip the file. Please check the following video. This video shows download, unlock and then unzip.

Usages TEST_LXSMWD12.exe

video : ubpulse H3 and TEST_LXSMWD12.exe execution.


video : detailed view TEST_LXSMWD12.exe. real time measuring process.


video : detailed view TEST_LXSMWD12.exe. HRV measured data acquire .


LXSMWD12 Version History


version 1.3.

  • release date : 2020.01.27
  • Open_Device_UsbSerial() ; added

version : 1.2 .

  • release date : 2019.12.09
  • supporting 64bit / 32bit . rebuild the previous VC++6.0 project using VC++2010.



Documents for User.

 ubpulse H3 Quick Guide. download or view online.

Documents for App. Developer. low level communication.

 LXE13. ubpulse H3 Communication Spec. for Real Time Measuring.  download or view online.
 LXE14. ubpulse H3 Communication Spec. for HRV Analysis.  download or view online.

Resources for App. Developer. ubpulse API for Windows.

 LXE33. LXSMWD12 Developer Manual.  download or view online.

 LXSMWD12_32bit.zip download.  (32bit, new DLL rebuild by Visual C++ 2010 )

 LXSMWD12_64bit.zip download.  (64bit, new DLL rebuild by Visual C++ 2010 )

 TEST_LXSMWD12_VC2017_32_64.zip  download. (Visual C++ 2017 project source, both 32bit and 64bit available)


 LXSMWD12.zip download.  (32bit, old version Visual C++ 6.0 , not recommended)

 TEST_LXSMWD12.zip  download.  (Visual C++ 6.0  project source , only 32bit application)

Medical Certification.

 ubpulse H3 Medical Certification. download or view online.

How to Buy

Available buying online  from LAXTHA eShop.

ubpulse H3. LAXTHA eShop :  http://laxtha-eshop.kr/goods/view?no=149

ubpulse H3. NAVER store : https://smartstore.naver.com/laxtha_eshop/products/4104320661

ubpulse H3 COUPANG : https://coupa.ng/bgJw8i

락싸 이숍 ubpu...

Suggest Edit