BTIR3

The NGT-BTIR3 is a universal Bluetooth® Dante™/AES67-enabled audio interface designed for the nexgentec™ audio distribution solution.

Picture Picture

It features a robust API for navigation, configuration, and management, making it highly versatile for integration into various systems.

The NGT-BTIR3 operates exclusively in sink mode, supporting all current audio codecs and ensuring compatibility with a wide range of Bluetooth sources. It provides two AES67/Dante™ output channels for seamless audio distribution.

The device can be easily integrated with third-party control systems via its API, accessible through the communication control network port. Configuration is straightforward using its built-in web UI, which allows full control over all aspects of the interface.

Key Features

  • Power over Ethernet (PoE) on the first network port for simplified installation.
  • A manageable integrated 2-port switch for flexible networking.
  • The nexgentec ngtOS operating system, offering advanced control API, configuration, and monitoring capabilities.

Subsections of BTIR3

Apps

Configure Installed Apps of the Unit

Each installed app can be configured to a certain level via the web interface.

Info

The default login for the web interface is: Username: admin Password: nexgentec

Open a browser and enter the device’s network address in the address bar, then press Enter.

Picture Picture

Use the top menu bar to navigate to Apps and select the app to be configured.

Subsections of Apps

API

Using the top menu bar, navigate to Apps > API.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

logLevel

  • Select the log level for the app.

transport

  • Read-only: This field shows the internally used transport address.

api

  • Use the dropdown menus to select the Endpoint and the port to use for each protocol that the API can communicate with.

Bluetooth

Using the top menu bar, navigate to Apps > Bluetooth.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

Picture Picture

log Level

  • Select the log level for the app.

transport url

  • Read-only: This field shows the internally used transport address.

Options > Module

Picture Picture

Name

Address

  • The name of the Bluetooth device. This name is broadcasted as the device name over Bluetooth.

Firmware

  • Read-only: Displays the firmware version of the Bluetooth chip.

Status

  • Enables or disables the Bluetooth antenna.

Profiles

  • Read-only: Lists the available and activated Bluetooth profiles.

Codecs

  • Read-only: Lists the available and activated Bluetooth audio codecs.

Pairing

  • Read-only: Indicates whether pairing is enabled or disabled. If pairing is disabled, no new devices can connect. If a device is already connected, pairing is always disabled until the device disconnects.

Pairing Mode

  • Options: Yes, No, or Auto.
    • Auto: Allows silent pairing without showing any pop-ups or prompts.
    • Yes/No: May display a pairing code and ask for confirmation.

Reconnect Attempts

  • Specifies whether Bluetooth should automatically reconnect after a BRIR3 restart and how many attempts should be made.

Options > Devices

Picture Picture

Paired Bluetooth devices

  • This is the list of the currently paired Bluetooth devices.
  • To delete a device, click the trashcan icon next to the device you want to remove
  • Select the green ACL symbol to add this device to the allowed devices in the access control list.
  • Select the red ACL symbol to add this device to the denied devices in the access control list.

Access Control List

Picture Picture

The Access Control List (ACL) displays a table of devices with the following details for each entry:

  1. Name: The name of the Bluetooth device, as identified during pairing.

  2. MAC Address: The unique MAC address of the Bluetooth device.

  3. Access:
    Indicates whether the device is allowed or denied access.

    • Allow: The device is permitted to connect.
    • Deny: The device is blocked from connecting.
  4. Delete Option:
    Each entry includes a trashcan icon that allows you to delete the device from the list.

Access Control List Configuration

Picture Picture

  • New Pairing Requests:
    This setting determines whether new devices are allowed to pair and stay connected with the Bluetooth module.
    • Allow: The device can connect and is granted access automatically.
    • Deny: The device will connect but will immediately be disconnected.

Broker

Using the top menu bar, navigate to Apps > Broker.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

logLevel

  • Select the log level for the app.

transport

  • Read-only: This field shows the internally used transport address.

Dante

Using the top menu bar, navigate to Apps > Broker.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

network

  • Select the interface to be used for Dante audio. This interface will be used for audio data transmission.

Display

Using the top menu bar, navigate to Apps > Display.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

logLevel

  • Select the log level for the app.

transport

  • Read-only: This field shows the internally used transport address.

time

  • Select the time format to be shown on the display, 24h or AM/PM.

temperature

  • Select the temperature format to be shown on the display in Celsius or Fahrenheit.

backlight

  • Select the brightness level. Possible values range from 0 to 255. At 0, the display on the front is completely dark and appears to be turned off.

Netd

Using the top menu bar, navigate to Apps > WebUI.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

logLevel

  • Select the log level for the app.

WebUI

Using the top menu bar, navigate to Apps > WebUI.

Files

Files > Log

Selecting “Files” will open the file browser where you can download and view the log files from the app.

Options

Options > General

logLevel

  • Select the log level for the app.

transport

  • Read-only: This field shows the internally used transport address.

web

  • This is the address of the web UI to run on. The default is on all interfaces and port 80, therefore “:80”. Be careful when changing this setting.

Configuration

Configure Hardware and Software Properties

All configuration tasks can be performed via the web interface.

Info

The default login for the web interface is: Username: admin Password: nexgentec

Open a browser and enter the device’s network address in the address bar, then press Enter.

Picture Picture

Use the top menu bar to navigate to the option you want.

Subsections of Configuration

Network

Info

This guide applies to all units running ngtOS >= version 1.0.16 (beta-rc6)

Status

The status of the network connections can be viewed on the status page System > Network > Status

Picture Picture

General

Note

Points to consider:

  • Never assign a gateway to more than one connection.
  • Never place more than one connection in the same IP address range.
  • Use DNS servers that are reachable.
  • Avoid leaving two interfaces connected to the network on DHCP.
  • The unit requires internet access. This is necessary in case service personnel need to access the unit using the built-in support tool.
Notice

If things go wrong:

  • Try to locate the device using your DHCP server. Attempt this on all available Ethernet interfaces.
  • The display on the unit shows the full configuration for each interface, including the path to access the IP address.

Basic Functionality

In general, the physical network interfaces and the internal endpoints should be understood as a managed switch infrastructure. Each physical port can take untagged and tagged VLANs, each VLAN can be used to connect an “Endpoint” for Audio and/or Control. Finally, VLANs can be forwarded tagged or untagged between the physical interfaces, keeping the tagging or even untagging during forwarding.

Picture Picture In this example, both physical ports are carrying VLANs 13, 15, and 22.

  • VLAN 13 is the untagged (native) VLAN on eth1 and gets tagged while flowing towards eth2, and vice versa. It’s also received by Endpoint 3, which is a management endpoint. The IP address (fixed or statically assigned) of Endpoint 3 can be reached on eth1 using no VLAN tag and on eth2 using a VLAN tag 13.

  • VLAN 15 is the tagged VLAN on eth1 and gets untagged while flowing towards eth2 (native), and vice versa. It’s also received by Endpoint 1, which is the audio endpoint. The IP address (fixed or statically assigned) of Endpoint 1 can be reached on eth1 using VLAN tag 15 and on eth2 using no VLAN tag.

  • VLAN 22 is a tagged VLAN which flows over both physical interfaces. It’s also received by Endpoint 2, which is a management endpoint. The IP address (fixed or statically assigned) of Endpoint 2 can be reached on any of the two physical interfaces using a VLAN tag 22.

On the Front Display

The front panel display shows the current network configuration, including how to access the shown IP address. If multiple endpoints exist, the line scrolls every 5 seconds to display all endpoints.

Syntax: physical[:Tagged VLAN]>Endpoint name > IP Address (CIDR notation).

Examples

Following the example above:

  • eth1 > Endpoint 3 > 192.168.1.20/24 (See the description above on how to access 192.168.1.20)
  • eth1:15 > Endpoint 1 > 192.168.5.20/24 (See the description above on how to access 192.168.5.20)

Configure

Select in the top menu System > Network > Settings

Continuing with the example above, this would look like:

Picture Picture

Picture Picture

Detailed Field Descriptions for “Switches”

Name

  • Read-only: This field displays the name of the switch to be configured. “vswitch1” is the switch to be configured. Currently, only one virtual switch is allowed.

Multicast Snooping

  • This setting allows the switch to observe and learn the multicast groups and associated members to limit the forwarding of multicast traffic. Use with caution. If you experience any problems with multicast streams flowing towards the unit or passing through it, turn this setting off.

Multicast Querier

  • This setting allows the switch to send out network queries to determine which hosts belong to which multicast groups. It will be automatically set to false once the Endpoint for Audio is included in a tagged VLAN on any of the physical ports. Use it only when there is no managed switch in the network that could send out the query.

Detailed Field Descriptions for “Ports”

  • Read-only: This field displays the MAC address assigned to the port.

Switch Member

  • This setting determines whether to include or exclude the physical port from being used by the managed switch.

VLAN Untagged

  • This setting allows you to specify which VLANs should have their tags removed when traffic is sent out of this port.

VLAN Tagged

  • This setting allows you to specify which VLANs should retain their tags when traffic is sent out of this port.

Detailed Field Descriptions for “Endpoints”

Name

  • Read-only: This field displays the name of the endpoint.
  • This field displays the MAC address assigned to the endpoint.

Switch Member

  • This setting determines in which virtual switch the endpoint should be included.

Usage

  • This field indicates how the endpoint is being used in the network setup, either for Control, Audio, or both.

VLAN Untagged

  • This setting allows you to specify which VLANs should be included and have their tags removed when traffic is sent out of this endpoint.

DHCP

  • This setting enables or disables the Dynamic Host Configuration Protocol (DHCP) for the endpoint. If enabled, the endpoint will automatically receive an IP address from the DHCP server in the network.

Addresses

  • This field displays the IP addresses assigned to the endpoint. The notation is in CIDR notation.

Routes (To)

  • This field displays the routing table for the endpoint, showing where traffic will be directed. To add a default route (gateway), enter To: 0.0.0.0/0 Via: Gateway Address.

Nameservers

  • This field displays the IP addresses of the DNS servers that the endpoint is configured to use.

Time

Status

You can view the status of the time on the status page by navigating to System > Time > Status. Picture Picture

Configuration

Select in the top menu System > Network > Settings Picture Picture

Detailed Field Description

NTP Server

  • Enter a reachable NTP server that is geographically close to you.

Fallback NTP Server

  • Enter another reachable NTP server that is geographically close to you. This server will be queried if the first server becomes unreachable.

Time Zone

  • Select the time zone that you are in.

Control APIs

Control the Bluetooth Interface over TCP and HTTP using JSON-RPC 2.0

This is a preliminary api documentation, subject to change

Subsections of Control APIs

JSON RPC 2.0 API

This section describes the communication protocol between the control system and the BTIR3 using RPC calls using the JSON-RPC 2.0 protocol

Definitions

Caution

Commands must be formatted as defined in the JSON-RPC 2.0 protocol
All commands sent over TCP transport must end with <LF>
All replies are formatted as defined in the JSON-RPC 2.0 protocol
All replies over TCP transport end up with <LF>
<LF> stands for “line feed”, corresponding hex is 0x0A

Transport protocols

JSON-RPC 2.0 commands can flow over different transport protocols, they need to be enabled in the config file of the installed api service. Per default they might not be enabled.

Transport Config Datatype Example Supported Versions
TCP jrpc2TCPInterface string eth1 >v1.0.1
TCP jrpc2TCPPort int 64823 >v1.0.1
TCP jrpc2HTTPInterface string eth1 >v1.0.1
TCP jrpc2HTTPPort int 64880 >v1.0.1

In subsequent pages all methods are described that can be used.

Concurrency

All JSON-RPC 2.0 services do support asynchronous message processing. 3rd party control Systems must keep tracking of the id’s to determine whether a request was successful or not

TCP transport

Any TCP capable application can be used to test commands. Do not forget to end up with <LF>

HTTP transport

The body of the HTTP POST request must contain the complete JSON-RPC request message, encoded with Content-Type: application/json. Either a single request object or a list of request objects is supported. If the request completes, whether or not there is an error, the HTTP response is 200 (OK) for ordinary requests or 204 (No Response) for notifications, and the response body contains the JSON-RPC response. If the HTTP request method is not “POST”, BTIR3 reports 405 (Method Not Allowed). If the Content-Type is not application/json, BTIR3 reports 415 (Unsupported Media Type).

Test from a linux shell:
curl -i -X POST -H ‘Content-Type: application/json’ -d ‘{“jsonrpc”:“2.0”,“id”:1,“method”:“rpc.serverInfo”}’ http://host:64880

Subsections of JSON RPC 2.0 API

bluetooth

bluetooth commands are generic commands for all nexgentec™ devices that support Bluetooth. These commands utilize the generic Bluetooth protocol, enabling seamless integration and control across supported devices.

bluetooth.config.set

Change the Bluetooth configuration

Request

Note

The mute function only works if playback is currently active.

Note

The defaults parameter clears all configurations and ignores all other parameters sent with it.

Method Param Value Comment Supported Versions
bluetooth.config.set >=v1.0.16
name string Bluetooth Name >=v1.0.16
status 0,1 Power on (1) or off (0) >=v1.0.16
pairing 0,1 activate pairing (1) or deactivate (0) >=v1.0.16
reconnect 0-15 activate and retry reconnect (1-15) or deactivate (0) >=v1.0.16
pairingMode 0,1 Yes/no (1) or auto (0) >=v1.0.16
mute 0,1 Mute (1) or Unmute (0) >=v1.0.16
defaults 1 All Settings to Default (1) >=v1.0.16
{
  "method": "bluetooth.config.set",
  "params": {
    "pairing": 1,
    "status": 1,
    "pairingMode": 1,
    "name": "MyBTDev",
    "reconnect": 1
  },
  "id": 1,
  "jsonrpc": "2.0"
}

Reply

Result Comment
null null means acknowledged, no error
{"jsonrpc":"2.0","id":1,"result":null}

bluetooth.config.get

Get the Bluetooth configuration

Request

Method Param Value Comment Supported Versions
bluetooth.config.get >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"bluetooth.config.get"}

Reply

Result Key Comment
config
pairing 1 if pairing is active, 0 if pairing is deactivated
media Read only max refresh rate of media info
status 1 if bluetooth antenna is active, 0 if not active
pairingMode 1 for Yes/No, 0 for Auto pairing
codecs Read only activated codecs
address Read only Bluetooth MAC Address
error null if there is no error on the channel; otherwise, displays the error message.
profiles Read only activated profiles
name Bluetooth Name
firmware Firmware version of Bluetooth Interface
reconnect 1-15 if active and retry, 0 no reconnect
{
  "result": {
    "pairing": 0,
    "media": {
      "playProgRate": 5,
      "trackID3Info": 1
    },
    "status": 1,
    "pairingMode": 1,
    "codecs": {
      "sbc": 1,
      "aac": 1,
      "aptxLL": 1,
      "aptxHD": 1,
      "aptxAD": 1,
      "aptx": 1
    },
    "defaults": null,
    "address": "dc:0d:30:40:73:4a",
    "error": null,
    "profiles": {
      "a2dpSource": 0,
      "bisSink": 0,
      "cisSink": 1,
      "a2dpSink": 1
    },
    "name": "ngt-btir3-8c1f648a427a",
    "mute": null,
    "firmware": "V1.1.6",
    "reconnect": 5
  },
  "id": 481,
  "jsonrpc": "2.0"
}

bluetooth.config.subscribe

This method enables push notifications for configuration changes of the Bluetooth chip. The pushed status messages follow the same format as the bluetooth.config.get replies.

Info

Subscribe to receive real-time updates about configuration changes of the Bluetooth chip.

Note

Push messages over HTTP transport are not supported.

Request

Method Param Value Comment Supported Versions
bluetooth.config.subscribe >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"bluetooth.config.subscribe"}

Reply

Result Comment
null null means acknowledged, no error
{"jsonrpc":"2.0","id":1,"result":null}

bluetooth.config.unsubscribe

Unsubscribe all Bluetooth config change push messages

Request

Method Param Value Comment Supported Versions
amplifier.channels.unsubscribe >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"bluetooth.config.unsubscribe"}

Reply

Result Comment
null null means acknowledged, no error
{"jsonrpc":"2.0","id":1,"result":null}

bluetooth.peer.set

Set various aspects of the peer (connected Bluetooth device).

Request

Method Param Value Comment Supported Versions
bluetooth.peer.set volume 0-15 Set the volume. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.set",
  "params": {
    "volume": 10
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.peer.get

Retrieve all information about the connected peer (connected Bluetooth device).

Request

Method Param Value Comment Supported Versions
bluetooth.peer.get >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.get"
}

Reply

Result Key Comment
peer
mac Bluetooth MAC address of the connected device.
media All media information, including artist, title, album, elapsed time, and total duration.
connection The current connection state: unsupported, standby, connecting, connected, paused, streaming.
volume The current volume level of the Bluetooth device.
error null if there is no error; otherwise, displays the error message.
node The unique identifier of the Bluetooth module.
name The name of the connected Bluetooth device.
codec The audio codec being used (e.g., AAC, SBC).
pairCode The pairing code, if applicable; otherwise, null.
{
  "result": {
    "mac": "74:15:f5:ea:05:83",
    "media": {
      "artist": "Hosini & Jones",
      "elapsed": 3754,
      "total": 288011,
      "title": "Grön",
      "state": "playing",
      "album": "Cafe del Mar ChillWave 3"
    },
    "connection": "streaming",
    "volume": 11,
    "error": null,
    "node": "ngt-btir3-8c1f648a427c",
    "name": "iPad",
    "codec": "AAC",
    "pairCode": null
  },
  "id": 180,
  "jsonrpc": "2.0"
}

bluetooth.peer.subscribe

This method enables push notifications for status changes of the connected Bluetooth peer. The pushed status messages follow the same format as the bluetooth.peer.get replies.

Info

Subscribe to receive real-time updates about the connected peer’s status.

Note

Push messages over HTTP transport are not supported.

Request

Method Param Value Comment Supported Versions
bluetooth.peer.subscribe Subscribe to peer status changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.subscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.peer.unsubscribe

Unsubscribe from all status change messages for the connected Bluetooth peer (connected Bluetooth device).

Request

Method Param Value Comment Supported Versions
bluetooth.peer.unsubscribe Unsubscribe from peer status changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.unsubscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.peer.transport

Control playback and transport actions for the connected Bluetooth device.

Request

Method Param Value Comment Supported Versions
bluetooth.peer.transport play 1 Start playback. >=v1.0.16
bluetooth.peer.transport stop 1 Stop playback. >=v1.0.16
bluetooth.peer.transport pause 1 Pause playback. >=v1.0.16
bluetooth.peer.transport skipfwd 1 Skip to the next track. >=v1.0.16
bluetooth.peer.transport skiprev 1 Skip to the previous track. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.transport",
  "params": {
    "play": 1
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.peer.release

Release the currently connected Bluetooth peer (connected Bluetooth device).

Request

Method Param Value Comment Supported Versions
bluetooth.peer.release Release the connected Bluetooth peer. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peer.release"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.peers.release

Release all currently connected Bluetooth peers (connected Bluetooth devices).

Request

Method Param Value Comment Supported Versions
bluetooth.peers.release Release all connected Bluetooth peers. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "bluetooth.peers.release"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

bluetooth.pairedlist.get

Retrieve a list of all paired Bluetooth devices.

Request

Method Param Value Comment Supported Versions
bluetooth.pairedlist.get Retrieve the list of paired devices. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 68,
  "method": "bluetooth.pairedlist.get"
}

Reply

Result Key Comment
result peers A list of paired devices, each containing the following details:
index: The index of the paired device.
name: The name of the paired Bluetooth device.
mac: The MAC address of the paired Bluetooth device.
error null if there is no error; otherwise, displays the error message.
{
  "jsonrpc": "2.0",
  "id": 68,
  "result": {
    "node": "ngt-btir3-8c1f648a427c",
    "peers": [
      {
        "index": 1,
        "name": "iPad",
        "mac": "74:15:f5:ea:05:83"
      },
      {
        "index": 2,
        "name": "MyPhone",
        "mac": "16:15:f5:44:2a:ab"
      }
    ],
    "error": null
  }
}

bluetooth.pairedlist.clear

Clear the list of all paired Bluetooth devices.

Request

Method Param Value Comment Supported Versions
bluetooth.pairedlist.clear Clear all paired devices. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 69,
  "method": "bluetooth.pairedlist.clear"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 69,
  "result": null
}

bluetooth.pairedlist.remove

Remove specific devices from the paired Bluetooth devices list.

Request

Method Param Value Comment Supported Versions
bluetooth.pairedlist.remove peers Array of paired device objects Specify devices to remove by index, name, or MAC address. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 71,
  "method": "bluetooth.pairedlist.remove",
  "params": {
    "peers": [
      {
        "index": 2
      },
    ]
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 71,
  "result": null
}

bluetooth.pairedlist.subscribe

Subscribe to push notifications for changes in the paired Bluetooth devices list. This is useful for receiving real-time updates when devices are added or removed from the paired list. The pushed status messages follow the same format as the bluetooth.pairedlist.get replies.

Info

Subscribe to receive real-time updates about paired list changes.

Note

Push messages over HTTP transport are not supported.

Request

Method Param Value Comment Supported Versions
bluetooth.pairedlist.subscribe Subscribe to paired list changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 232,
  "method": "bluetooth.pairedlist.subscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 232,
  "result": null
}

bluetooth.pairedlist.unsubscribe

Unsubscribe from push notifications for changes in the paired Bluetooth devices list, stopping any further updates about paired list changes.

Request

Method Param Value Comment Supported Versions
bluetooth.pairedlist.unsubscribe Unsubscribe from paired list changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 233,
  "method": "bluetooth.pairedlist.unsubscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 233,
  "result": null
}

bluetooth.acl.get

Retrieve the current Access Control List (ACL) for Bluetooth devices.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.get Retrieve the current ACL. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 101,
  "method": "bluetooth.acl.get"
}

Reply

Result Key Comment
result rules A list of ACL rules, each containing the following details:
mac: The MAC address of the device.
name: Name of the device.
access: 1 for allowed devices, 0 for denied devices.
error null if there is no error; otherwise, displays the error message.
{
  "jsonrpc": "2.0",
  "id": 101,
  "result": {
    "rules": [
      {
        "mac": "90:B1:44:9A:C2:5F",
        "name": "MySuperPhone1",
        "access": 1
      },
      {
        "mac": "90:B1:44:9A:C2:5E",
        "name": "MySuperPhone2",
        "access": 0
      }
    ],
    "error": null
  }
}

bluetooth.acl.clear

Clear all entries from the Access Control List (ACL).

Request

Method Param Value Comment Supported Versions
bluetooth.acl.clear Clear all ACL entries. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 102,
  "method": "bluetooth.acl.clear"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 102,
  "result": null
}

bluetooth.acl.add

Add new rules to the Access Control List (ACL).

Request

Method Param Value Comment Supported Versions
bluetooth.acl.add rules Array of ACL rule objects Specify devices to add by MAC address and access type, name not mandatory >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 103,
  "method": "bluetooth.acl.add",
  "params": {
    "rules": [
      {
        "mac": "90:B1:44:9A:C2:5F",
        "name": "MySuperPhone1",
        "access": 1
      },
    ]
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 103,
  "result": null
}

bluetooth.acl.remove

Remove specific rules from the Access Control List (ACL).

Request

Method Param Value Comment Supported Versions
bluetooth.acl.remove rules Array of ACL rule objects Specify devices to remove by MAC address or Name >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 104,
  "method": "bluetooth.acl.remove",
  "params": {
    "rules": [
      {
        "mac": "90:B1:44:9A:C2:5E"
      }
    ]
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 104,
  "result": null
}

bluetooth.acl.subscribe

Subscribe to push notifications for changes in the Access Control List (ACL). This is useful for receiving real-time updates about modifications to the ACL, such as adding or removing devices.

The pushed status messages follow the same format as the bluetooth.acl.get replies.

Info

Subscribe to receive real-time updates about ACL changes.

Note

Push messages over HTTP transport are not supported.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.subscribe Subscribe to ACL changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 240,
  "method": "bluetooth.acl.subscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 240,
  "result": null
}

bluetooth.acl.unsubscribe

Unsubscribe from push notifications for changes in the Access Control List (ACL), stopping any further updates about ACL changes.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.unsubscribe Unsubscribe from ACL changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 241,
  "method": "bluetooth.acl.unsubscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 241,
  "result": null
}

bluetooth.acl.config.get

Retrieve the current Access Control List (ACL) configuration.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.config.get Retrieve the ACL configuration. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 119,
  "method": "bluetooth.acl.config.get"
}

Reply

Result Key Comment
result defaultLevel 1 if new devices are allowed after pairing, 0 if they are rejected.
error null if there is no error; otherwise, displays the error message.
{
  "jsonrpc": "2.0",
  "id": 119,
  "result": {
    "defaultLevel": 1,
    "error": null
  }
}

bluetooth.acl.config.set

Set the default Access Control List (ACL) configuration.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.config.set defaultLevel 1, 0 1 to allow new devices after pairing, 0 to reject them. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 105,
  "method": "bluetooth.acl.config.set",
  "params": {
    "defaultLevel": 0
  }
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 105,
  "result": null
}
Info

If the default level is set to 0, all new paired devices are rejected by default. Ensure to manually add allowed devices to the ACL using the web interface or the API.
Similarly, if the default level is set to 1, all devices are allowed by default. You can later restrict access by modifying the ACL.


bluetooth.acl.config.subscribe

Subscribe to push notifications for changes in the Access Control List (ACL) configuration.

The pushed status messages follow the same format as the bluetooth.acl.config.get replies.

Info

Subscribe to receive real-time updates about ACL configuration changes.

Note

Push messages over HTTP transport are not supported.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.config.subscribe Subscribe to ACL configuration changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 236,
  "method": "bluetooth.acl.config.subscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 236,
  "result": null
}

bluetooth.acl.config.unsubscribe

Unsubscribe from push notifications for changes in the Access Control List (ACL) configuration.

Request

Method Param Value Comment Supported Versions
bluetooth.acl.config.unsubscribe Unsubscribe from ACL configuration changes. >=v1.0.16
{
  "jsonrpc": "2.0",
  "id": 237,
  "method": "bluetooth.acl.config.unsubscribe"
}

Reply

Result Comment
null null means the request was successful, with no errors.
{
  "jsonrpc": "2.0",
  "id": 237,
  "result": null
}

fb12 bluetooth service

fb12 commands are specific to BTIR3 nexgentec™ devices. These commands are used to control the fb12 Bluetooth service, which is a chip-specific service designed for BTIR3 devices.

fb12.app.log.level.get

Get the log level for the fb12 Bluetooth service running on the BTIR3

Request

Method Param Value Comment Supported Versions
fb12.app.log.level.get >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"fb12.app.log.level.get"}

Reply

Result Comment
x Active log level
{"jsonrpc":"2.0","id":20,"result":{"level":3}}

fb12.app.log.level.set

Set the log level for fb12 service and associated processes

Request

Method Param Value Comment Supported Versions
fb12.app.log.level.set level 0-7 Log level to set >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"fb12.app.log.level.set","params":{"level":6}

Reply

Result Comment
null null means acknowledged, no error
{"jsonrpc":"2.0","id":1,"result":null}

api

api commands are generic commands for all nexgentec™ devices that have an API. These commands utilize the generic API protocol, enabling seamless integration and control across supported devices.

api.app.log.level.get

Get the log level for the api service running on the api

Request

Method Param Value Comment Supported Versions
api.app.log.level.get >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"api.app.log.level.get"}

Reply

Result Comment
x Active log level
{"jsonrpc":"2.0","id":20,"result":{"level":3}}

api.app.log.level.set

Set the log level

Request

Method Param Value Comment Supported Versions
api.app.log.level.set level 0-7 Log level to set >=v1.0.16
{"jsonrpc":"2.0","id":1,"method":"api.app.log.level.set","params":{"level":6}

Reply

Result Comment
null null means acknowledged, no error
{"jsonrpc":"2.0","id":1,"result":null}

server

server commands are generic commands for all Nexgentec™ devices that support a JSON-RPC 2.0 API. These commands provide a standard JSON-RPC method to retrieve the list of supported methods available on the device.

rpc.server.info.get (serverInfo)

Get all supported RCP methods

Request

Method Param Value Comment Supported Versions
rpc.serverInfo >1.0.1
rpc.server.info.get >=1.0.14
{"jsonrpc":"2.0","id":1,"method":"rpc.serverInfo"}

{"jsonrpc":"2.0","id":1,"method":"rpc.server.info.get"}

Reply

Result Key Comment
methods All supported methods that can be used by a 3rd party control system
counters Server counters
startTime Server start time
{
  "result": {
    "startTime": "2025-04-01T12:45:20.908934559Z",
    "metrics": {
      "bytes_written": 364,
      "rpc_requests": 3,
      "bytes_read": 165,
      "notifications_pushed": 0,
      "rpc_errors": 1,
      "servers_active": 2,
      "calls_pushed": 0
    },
    "methods": [
      "api.app.log.level.get","api.app.log.level.set","api.app.version.get","api.appLogLevelGet","api.appLogLevelSet","api.appVersionGet","bluetooth.acl.add","bluetooth.acl.clear","bluetooth.acl.config.get","bluetooth.acl.config.set","bluetooth.acl.config.subscribe","bluetooth.acl.config.unsubscribe","bluetooth.acl.get","bluetooth.acl.remove","bluetooth.acl.subscribe","bluetooth.acl.unsubscribe","bluetooth.config.get","bluetooth.config.set","bluetooth.config.subscribe","bluetooth.config.unsubscribe","bluetooth.pairedlist.clear","bluetooth.pairedlist.get","bluetooth.pairedlist.remove","bluetooth.pairedlist.subscribe","bluetooth.pairedlist.unsubscribe","bluetooth.peer.get","bluetooth.peer.release","bluetooth.peer.set","bluetooth.peer.subscribe","bluetooth.peer.transport","bluetooth.peer.unsubscribe","bluetooth.peers.release","bluetooth.pl.clear","bluetooth.pl.get","bluetooth.pl.remove","fb12.app.log.level.get","fb12.app.log.level.set","fb12.app.version.get","rpc.server.info.get","rpc.serverInfo"]
  },
  "id": 2,
  "jsonrpc": "2.0"
}

Specifications

OS Support
OS iOS, PC, MAC and Android
Bluetooth
Standards V5.4 down to V1.1, Class 1.5
Band 2.402 – 2.480 GHz
Audio Format SBC, AAC, APTX, APTX-HD, APTX-AD, APTX-LL
Profiles A2DP Sink, LE-Audio Unicast Sink
Digital Audio Output
Type 8 channels, full range
Format Dante™, Aes67
Network port eth1
Physical Level Standard Ethernet
Connector Single RJ-45
Cable Quality CAT-5/6/7
Transmission Speed 10/100/1000 Mbps Full Duplex
PoE standards IEEE 802.3at
Network port eth2
Physical Level Standard Ethernet
Connector Single RJ-45
Cable Quality CAT-5/6/7
Transmission Speed 10/100/1000 Mbps Full Duplex
General
Power POE, 10W max
Total heat dissipation max 10.00 BTU/hr
Operating temp 5°C – 30°C
Dimensions L: 110mm, W: 74mm, H:25mm
Compliance CE, ROHS

Audio Channel Assignment

Channel Assignment
1 Left Channel
2 Right Channel

CAD step file

Step files

ngtOS

Caution

Never downgrade to an older ngtOS, as it will result in a factory return of the unit in every case.

Notice

If you have multiple units to update, try the update on one and if it’s working as expected, proceed with all others.

Update Path

  • All units must be updated to 1.0.16 (beta-rc6) before upgrading to any higher version of ngtOS.
  • Future update paths will be published when available.

Update Notes

Version 1.0.16 (beta-rc6)

  • Initial version of ngtOS that supports Bluetooth

Plan the Update

  1. Ensure that the unit you plan to update is connected to a network with unfiltered internet access. This is necessary in case service personnel need to access the unit using the built-in support tool.
  2. Make sure that you are within the office hours of Nexgentec Audio AG Switzerland (8am to 4pm CET +1).
  3. Ensure that no one else is working on the network during the time of the update.

Run the Update

Info

The default login for the web interface is: Username: admin Password: nexgentec

  1. Open a browser and enter the IP address of the unit into the address bar.
  2. Log into the web interface using username and the chosen password.
  3. In the top menu bar, select ‘Help’ > ‘Update’.

    Picture Picture
  4. Follow the instructions shown.
  5. Wait for the unit to reboot
Attachments

Change Log

Version 1.0.16 (beta-rc6)

  • Initial version of ngtOS that supports Bluetooth

Known Issues

Version 1.0.16 (beta-rc6)

  • WebUI: Clustering configuration is missing
  • WebUI: Mandatory password change feature is missing
  • SNMP: Missing

Upcoming Features

Features Awaiting Implementation:

  • User configuration support for clustering
  • SNMP support