# LINE Beacon device specification

This topic explains the LINE Beacon specification for enterprise users who wish to deploy beacon devices to use the LINE Beacon feature. To use the LINE Beacon feature, you need to prepare beacon devices compliant with this specification.

Unlike LINE Simple Beacon (opens new window) packets, LINE Beacon packets contain the secure message field as a mechanism for security.

# Requirements for devices compliant with the LINE Beacon specification

A beacon device compliant with the LINE Beacon specification supports Bluetooth® Low Energy Version 4.0 and Apple's iBeacon (opens new window) and can advertise LINE Beacon packets. Specifically, the device must meet the following requirements:

  • Advertise LINE Beacon packets.
  • Generate the secure message from data hashed by SHA-256 and XOR (exclusive OR) operations.
  • Update the secure message every 15 seconds.
  • Have a unique HWID and display it on the body.

# LINE Beacon packet

You need to control beacon devices according to the broadcaster role (BLUETOOTH SPECIFICATION Version 4.0 [Vol 3], Part C Section 2.2.2.1) specified in the generic access profile so that LINE can detect the beacon devices quickly.

# Format of the advertising data

The advertising data of a LINE Beacon packet consists of three AD structures.

LINE Beacon packet

The format and values to specify are as follows.

Octet Field Value Description
00 Length 0x02 The data length of the first AD structure (2 bytes)
01 AD type 0x01 This value indicates that AD type is Flags.
02 AD data 0x06 This value indicates that the flags are LE General Discoverable Mode and BR/EDR Not Supported.
03 Length 0x03 The data length of the second AD structure (3 bytes)
04 AD type 0x03 This value indicates that AD type is Complete list of 16-bit UUIDs available.
05 16-bit UUID 0x6F Together with the next byte, this value indicates the 16-bit UUID of LINE (0xFE6F).
06 16-bit UUID 0xFE Together with the previous byte, this value indicates the 16-bit UUID of LINE (0xFE6F).
07 Length 0x11 The data length of the third AD structure (17 bytes)
08 AD type 0x16 This value indicates that AD type is Service Data - 16-bit UUID.
09 16-bit UUID 0x6F Together with the next byte, this value indicates the 16-bit UUID of LINE (0xFE6F).
10 16-bit UUID 0xFE Together with the previous byte, this value indicates the 16-bit UUID of LINE (0xFE6F).
11 Frame type 0x02 This value indicates that the frame type is LINE Beacon.
12-16 HWID Device-specific value 5-byte unique ID of the beacon device. For more information, see HWID.
17 Measured TxPower Device-specific value RSSI (Received Signal Strength Indicator) when the distance between the device with LINE installed and the beacon device is 1 meter. Set the same value as for the iBeacon packet. For more information, see the iBeacon documentation.
Set this field to 0x7F if you don't use RSSI data.
18-21 Message authentication code Variable 4-byte code for message authentication. For more information, see Generating a secure message.
22-23 Masked timestamp Variable 2-byte masked timestamp. For more information, see Generating a secure message.
24 Battery level Variable Remaining battery capacity. For more information, see Battery level.
25-30 Non-significant part 0x00 Unused part. Set each byte to 0x00.

# Packet transmission interval

We strongly recommend sending LINE Beacon packets at 152.5-ms intervals.

# Secure message

The secure message is 7-byte data that consists of the message authentication code, masked timestamp, and battery level. It is used to prevent packet tampering and replay attacks. Secure messages transmitted from beacon devices are sent to the LINE Platform via LINE and then verified.

This section explains how to generate a secure message.

# Generating a secure message

A secure message is generated by performing the XOR (exclusive OR) operation three times on a hash value computed with SHA-256. The following figure shows the generation flow of the secure message. For the required parameters, see Required parameters.

Generation algorithm of the secure message

Generate a secure message by following the steps below.

# 1. Generate a message authentication code
  1. Concatenate the following items in the order listed and generate a 32-byte hash value with SHA-256.

  2. Perform the XOR operation on the first 16 bytes and the second 16 bytes of the hash value.

  3. Perform the XOR operation on the first 8 bytes and second 8 bytes of the value computed in the previous step.

  4. Perform the XOR operation on the first 4 bytes and second 4 bytes of the value computed in the previous step.

Now you have generated a message authentication code.

# 2. Generate a masked timestamp

Mask 6 bytes from the beginning of the timestamp and leave the last 2 bytes. This is a masked timestamp.

# 3. Concatenate items

Concatenate the following items in the order listed:

  • Message authentication code generated in step 1
  • Masked timestamp generated in step 2
  • Battery level

Now you have generated a secure message.

See Sample code and data for generating secure messages. This topic helps you develop and test a function to embed in beacon devices to generate secure messages.

# Required parameters

The following parameters are used to generate a secure message.

LINE Corporation generates and manages the HWID, lot key, and vendor key. For details about how to obtain them, contact your LINE representative.

Services using the lot key and vendor key are available only to enterprise users.

# Battery level

This is remaining battery capacity. Use this parameter to determine when to replace the battery. The following table shows the meaning of each value.

Decimal value Hexadecimal value Description
0 0x00 Unknown or connected to an external power supply.
1 0x01 0% available. The battery is fully discharged.
2 0x02 10% available
10 0x0A 90% available
11 0x0B 100% available. The battery is fully charged.
(12-255) 0x0C-0xFF Reserved for future use. Do not use.
# HWID

HWID is used as the ID of a beacon device. HWID issued by LINE Corporation is a 10-character string in hexadecimal notation. Convert it to a byte array and write it into the beacon device as 5-byte binary data.

Print the HWID on the body of the beacon device.

# Lot key

A lot key is assigned to each lot. Lot keys issued by LINE Corporation are 16-character strings. Convert it to a byte array and write it to the beacon device as 8-byte binary data in the same way as the HWID.

# Timestamp

A timestamp is an unsigned 64-bit integer.

  • Start incrementing when the beacon device is turned on for the first time.
  • Start the timestamp with zero and increment every 15 seconds. Four is the timestamp one minute after power-on.
  • Do not reset the timestamp to zero when the beacon device is turned on again. Continue to increment the timestamp value at power-off.
# Vendor key

A vendor key is assigned to each vendor. A vendor key issued by LINE Corporation is an 8-character string in hexadecimal notation. Convert it to a byte array and write it into the beacon device as 4-byte binary data as you would the HWID.

# iBeacon packet

We recommend sending iBeacon packets to notify iOS devices that the LINE Beacon device is nearby.

For the AD structure and transmission interval of the iBeacon packet, see Apple's Proximity Beacon Specification document. You can download this document from the iBeacon section of the Apple Developer site (opens new window).

The following table shows the parameters specific to the LINE Beacon specification that you need to include in the iBeacon packet.

Parameter Value
UUID D0D2CE24-9EFC-11E5-82C4-1C6A7A17EF38
Major 0x4C49
Minor 0x4E45