From ce34fba27b4a960fcd50b69752d4958f420e6493 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 30 Mar 2026 06:44:41 +0000 Subject: [PATCH] Add ability to set custom MTU via connect options Allow users to specify a desired MTU per-connection by passing an `mtu` option to `peripheral.connect({ mtu: 512 })`. Defaults to 256 if not specified, preserving existing behavior. Closes #71 https://claude.ai/code/session_014RCJBatLRdZ3pqdSFaAgkv --- lib/hci-socket/bindings.js | 3 ++- lib/hci-socket/gatt.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/hci-socket/bindings.js b/lib/hci-socket/bindings.js index 6ffead84..775af7fd 100644 --- a/lib/hci-socket/bindings.js +++ b/lib/hci-socket/bindings.js @@ -336,7 +336,8 @@ NobleBindings.prototype.onLeConnComplete = function ( addressType, address ); - const gatt = new Gatt(address, aclStream); + const connectionParams = this._connectionQueue.length > 0 ? this._connectionQueue[0].params : {}; + const gatt = new Gatt(address, aclStream, connectionParams && connectionParams.mtu); const signaling = new Signaling(handle, aclStream); this._gatts[uuid] = this._gatts[handle] = gatt; diff --git a/lib/hci-socket/gatt.js b/lib/hci-socket/gatt.js index 501f92b5..4af79c5e 100644 --- a/lib/hci-socket/gatt.js +++ b/lib/hci-socket/gatt.js @@ -56,7 +56,7 @@ const GATT_SERVER_CHARAC_CFG_UUID = 0x2903; const ATT_CID = 0x0004; /* eslint-enable no-unused-vars */ -const Gatt = function (address, aclStream) { +const Gatt = function (address, aclStream, desiredMtu) { this._address = address; this._aclStream = aclStream; @@ -68,7 +68,7 @@ const Gatt = function (address, aclStream) { this._commandQueue = []; this._mtu = 23; - this._desired_mtu = 256; + this._desired_mtu = desiredMtu || 256; this._security = 'low'; this.onAclStreamDataBinded = this.onAclStreamData.bind(this);