Skip to content

Commit 5f7707b

Browse files
authored
Merge pull request openairplay#40 from LewdNeko/master
Fix iOS 15 Issue & Add PTP Master Toggle
2 parents c9a0641 + d0d9260 commit 5f7707b

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

ap2-receiver.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,16 @@ def setup_global_structs(args):
225225
}
226226

227227
sonos_one_setup = {
228-
'eventPort': 0, # AP2 receiver event server
229-
'timingPort': 0,
230-
'timingPeerInfo': {
231-
'Addresses':
232-
[
233-
IPV4,
234-
IPV6
235-
],
236-
'ID': IPV4}
228+
'eventPort': 0 # AP2 receiver event server
237229
}
230+
if not DISABLE_PTP_MASTER:
231+
sonos_one_setup['timingPort'] = 0
232+
sonos_one_setup['timingPeerInfo'] = {
233+
'Addresses': [
234+
IPV4, IPV6
235+
],
236+
'ID': IPV4
237+
}
238238

239239
sonos_one_setup_data = {
240240
'streams': [
@@ -894,6 +894,8 @@ def list_available_flags():
894894
parser.add_argument("-m", "--mdns", help="mDNS name to announce", default="myap2")
895895
parser.add_argument("-n", "--netiface", help="Network interface to bind to. Use the --list-interfaces option to list available interfaces.")
896896
parser.add_argument("-nv", "--no-volume-management", help="Disable volume management", action='store_true')
897+
parser.add_argument("-npm", "--no-ptp-master", help="Stops this receiver from being announced as the PTP Master",
898+
action='store_true')
897899
mutexgroup.add_argument("-f", "--features", help="Features: a hex representation of Airplay features. Note: mutex with -ft(xxx)")
898900
mutexgroup.add_argument(
899901
"-ft", nargs='+', type=int, metavar='F',
@@ -932,6 +934,7 @@ def list_available_flags():
932934
exit(-1)
933935

934936
DISABLE_VM = args.no_volume_management
937+
DISABLE_PTP_MASTER = args.no_ptp_master
935938
if args.features:
936939
# Old way. Leave for those who use this way.
937940
try:

ap2/pairing/hap.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ def __init__(self):
109109
self.encrypted = False
110110
self.pair_setup_steps_n = 5
111111

112+
self.accessory_id = b"00000000-0000-0000-0000-deadbeef0bad"
113+
# self.accessory_ltsk = 0
114+
# self.accessory_ltpk = 0
115+
112116
def request(self, req):
113117
req = Tlv8.decode(req)
114118

@@ -242,6 +246,9 @@ def pair_verify_m1_m2(self, client_public):
242246
)
243247
self.accessory_shared_key = self.accessory_curve.exchange(x25519.X25519PublicKey.from_public_bytes(client_public))
244248

249+
self.accessory_ltsk = nacl.signing.SigningKey.generate()
250+
self.accessory_ltpk = bytes(self.accessory_ltsk.verify_key)
251+
245252
accessory_info = self.accessory_curve_public + self.accessory_id + client_public
246253
accessory_signed = self.accessory_ltsk.sign(accessory_info)
247254
accessory_sig = accessory_signed.signature

0 commit comments

Comments
 (0)