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.



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

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.

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.

ubpulse H3’s serial communication is in compliance with LXSDF T2.

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

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





Documents for User.

 ubpulse H3 Quick Guide. download or view online.

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.

Medical Certification.

 ubpulse H3 Medical Certification. download or view online.

How to Buy

Available buying online  from LAXTHA eShop.

ubpulse H3 buy online URL :  http://laxtha-eshop.kr/goods/view?no=149

Suggest Edit