Accessories

RSS for tag

Discuss designing and creating accessories that complement Apple devices.

Posts under Accessories tag

21 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Bluetooth HID Button Release Not Working on iPad for Bluetooth Pointer
I am developing a Bluetooth pointer device to control an iPad using HID. Most functionality works well, including mouse movement and button presses. However, I am encountering a strange issue with button releases. For the HID descriptor for the iPad I defined the following: 0501 0902 A101 8503 0509 // Mouse Buttons 1901 2902 // 2 buttons 1500 2501 9502 // Report count for two buttons 7501 8102 9501 7506 // Padding 8103 0501 0901 A100 1500 // Min value 26FF7F // Max value (0...32767) 0930 0931 7510 9502 8102 // Absolute coordinate pointer C0 Do you see an issue with the descriptor? Example packages sent over bluetooth: 0xA103 01 4F3A FB50 // 01 is a left button click, works well, an icon is clicked on iPad. 0xA103 00 4F3A FB50 // 00 should be a left button release, package is sent and received, but button is NOT released, but held on the iPad! The mouse coordinates are updated well, however, I expect the button to be released when sending 0xA103 00 4F3A FB50, but it is held down instead. Perhaps there is a special requirement for iOS to make this work? It is close to be fully functioning.
0
0
116
1w
AccessorySetupKit - Accessory not found on some iPhones
Hi there, we're developing a Bluetooth LE device and are using the AccessorySetupKit to connect the device to our iOS application. We are a registered member of the Bluetooth SIG and are advertising our company id over BLE. Setting up the device works on most iPhones we've tested with, but not all. Here's an example of some of the devices we've tested: iPhone 12 mini: Not working, tried both iOS 18.1.1 and 18.1.1 iPhone 13 mini: Working, iOS 18.1.1 iPhone 15: Not working, iOS 18.1.1 iPhone 15: Works now, didn't work a few weeks ago iPhone 15 Pro: Works iPhone 16 Pro: Works Looking through the logs of the iPhone 12 mini while scanning I see some things that might be related in the logs (I've removed potentially identifying data). It seems to me that it's detecting the device, but not showing it in the UI: error 11:43:54.792877+0100 bluetoothd canSessionScanForMFGRData <our company ID> <private> there:1 default 11:43:54.795685+0100 deviceaccessd ### appBundleHasASKEnabled <our app bundle> supports Bluetooth default 11:43:54.795730+0100 deviceaccessd ### _reportDiscoveredBTDevice DADevice: ID <removed ID>, name '<ASPickerDisplayItem.name>', btID <removed ID>, flags AccessorySetup, type Hi-Fi Speaker <CBPeripheral: 0x4b8164540, identifier = <removed ID>, name = (null), mtu = 23, state = disconnected> has no bluetooth name We get no callbacks while the picker UI is displayed. Opening the picker on another device at the same time immediately shows our accessory. This seems like a bug in the AccessorySetupKit too me, but I'm not sure. Could we be doing something wrong?
4
0
160
1w
AccessorySetupKit - Peripheral devices with 16 bit UUID are not found in the ASKSample app.
My test was conducted by changing the pink dice to have a 16 bit UUID using the ASKSampleAccessory app. Afterwards, I ran AccessorySetupKit Picker in the ASKSample app, but Pink dice was not found. We confirmed that Pink dice was searched well in other apps. Does AccessorySetupKit not support 16 bit UUID? AccessorySetupKit Sample code : https://developer.apple.com/documentation/AccessorySetupKit/authorizing-a-bluetooth-accessory-to-share-a-dice-roll
1
0
179
2w
PTT Bluetooth transmission does not work as expected
Hello, I've been working to implement PTT in the way recommended by the documentation. The main issue is that the bluetooth methods are opaque, so I cannot solve for what I need. The result will be that I will have to resort to hacky approaches that the PTT framework seems to be intended to solve (playing silent clips, playing custom notification sounds, having long running background audio sessions). I am testing with Anker soundcore mini as well as airpod pro. Here's the issue: there are 2 very different behaviours depending on whether I'm using a call/fullDuplex session and a halfDuplex session. halfDuplex Anchor mini Current behaviour long press activates siri pressing again after siri is active, starts transmission long press activates siri again pressing again after siri is active, stops transmission pause/play routes to the ongoing media session and plays music Expected behaviour play/pause should map to transmit/stopTransmit IF I have to use long press, it should at least not trigger siri AirPod pro Current behaviour long press changes noise cancellation pause/play routes to the ongoing media session and plays music Expected behaviour play/pause should map to transmit/stopTransmit fullDuplex/call Anchor mini: Current behaviour long press activates siri pressing again after siri is active, starts transmission long press activates siri again pressing again after siri is active, stops transmission pause/play routes to the ongoing media session and plays music Expected behaviour play/pause should map to transmit/stopTransmit IF I have to use long press, it should at least not trigger siri AirPod pro Current behaviour long press changes noise cancellation pause/play maps to mute/unmute (even if media is playing) Expected behaviour This makes sense for call behaviour, I wish it worked this well for PTT The intention here is to be able to fully interact with a channel hands-free. The current API seems to make that impossible. Is that by design? Reading all the docs seems to suggest its intended for transmit/stopTransmit to be doable just with the play/pause buttons, but even apple hardware seems to not support that.
0
0
191
Nov ’24
iPhone 7 with iOS 15.8.2 never completes "Preparing for development"
PLATFORM AND VERSION iOS Development environment: Xcode 15.4, macOS 14.6.1 Run-time configuration: iOS 15.8.2 DESCRIPTION OF PROBLEM The only test phone that I have available is an iPhone 7 running iOS 15.8.2 (the latest iOS available for that device). When I connect the phone to XCode, it displays "Preparing Richard Cunningham's iPhone" indeterminately. I have tried many things including downloading new device support files, adding provisioning profiles, downgrading XCode, restarting both devices, wiping the phone, and setting the target SDK to match that of the test device. Despite all of this, XCode continues to display "Preparing ..." indeterminately. The issue can be found here on the developer forums: https://forums.developer.apple.com/forums/thread/692230 STEPS TO REPRODUCE Create a blank XCode iOS project (Multiplatform App, iOS App, it doesn't seem to make a difference) and connect the iPhone 7 (15.8.2) to the laptop. Select "Trust" on the phone to initialize the connection, and observe XCode display "Preparing iPhone" in the top bar. Cmd + Shift + 2 to open the Devices Window, and see "iPhone is busy: Preparing iPhone". Allow this to continue for some time (I have left it for over a day) and observe that there are no changes.
3
0
309
Nov ’24
Battery Displays for Custom Hardware
I am having difficulty figuring out two indicators for a custom piece of battery hardware. Firstly, on the home screen, scrolling all the way to the left in the widget screen, you can see the battery for connected wireless devices, electronic pencils, etc. Additionally, when you use Apple battery packs, you can see the battery for it on the top right of your phone I am wondering where I should look to see how I could integrate both of these. I have searched the documentation for a while, and I am having a hard time knowing where to start. If anyone can point me to something, it would be very appreciated. Thank you!
0
0
231
Oct ’24
AccessorySetupKit - Bluetooth peripheral connects but doesn't start SMP Pairing procedure
Previously working! Now Broken. I developed a test application to establish a connection with a BLE peripheral. The application successfully connected to the peripheral, but it did not establish SMP Pairing procedure. Previously, I was able to successfully pair with the devices during the Beta phase. However, currently, I am not receiving the OS prompt to grant Bluetooth permissions. I understand that this may be a newly introduced feature in the recent releases. Could you please provide guidance on whether there is a specific flag that needs to be enabled or added elsewhere, or if this is a bug with the ASK? PLEASE HELP!!!
0
0
288
Oct ’24
AVExternalStorageDevice permissions behavior completely broken on iOS 18?
I'm attempting to use AVExternalStorageDevice.requestAccess on iOS 18 using Xcode 16. When calling requestAccess, a dialog does appear, but the completionHandler closure is never called to indicate whether access was granted. If using the async version, the function just never returns. Calling requestAccess also results in a mediaServicesWereReset (-11819) error without fail. Supposedly, "the system only presents the dialog to a person the first time your app calls the method." That also doesn't appear to be the case. The dialog appears every time requestAccess is called, regardless of previous invocations and whether "Allow" or "Don't Allow" was selected. The dialog itself says "You can change this in Privacy settings." I cannot find this permission anywhere in the Settings app, neither under Privacy &amp; Security nor under the app-specific settings page. Has anyone else experienced these issues? Am I missing something here? I did suspect permissions issues and tried adding a NSRemovableVolumesUsageDescription entry to the app. This did not appear to change anything.
1
1
365
Oct ’24
Improvement to Future IPhones and Apple Watches
It would be a great innovation to incorporate a Card Reader into both iPhones and Apple Watches. The user could open the card reader app on his watch or phone, enter the amount to be paid into his nominated bank account (eg £15) ready for the purchaser/customer to tap his card to make the contactless payment. It would simplify my everyday life enormously because I hardly ever carry cash these days.
1
0
343
Sep ’24
Matter development - Matter Accessory - Apple Ecosystem
Apple developer support could not answer my question which is the following: How are Matter developers supposed to test accessory pairing, accessory communication and accessory discovery if the Console logs provided by Apple (iOS, MacOS, iPadOS) are encrypted, incomplete or straight up non-existent. Current issue is mDNS-SD discovery, pairing and PAKE requests initialisation. Impossible to figure out why X or Y stopped on the Apple Device. Chip-tool (provided by PROJECT-CHIP) acts 100% differently than iOS (Home) or iPadOS(Home). Thank you
0
0
397
Sep ’24
BLE Peripheral with RPA is unable to connect using AccessorySetupKit
I have created a sample iOS project where I am attempting to discover BLE peripherals using AccessorySetupKit in iOS 18. I am able to discover the BLE accessory and retrieve the CBPeripheral. However, when I attempt to connect to the CBPeripheral, the connection neither succeeds nor fails. I have noticed that the BLE peripheral I am trying to connect to uses a Resolvable Private Address (RPA). When I repeat the same process for a BLE peripheral with a Static Device Address (SDA), I am able to connect successfully. Could someone please suggest why I am unable to connect to the BLE peripheral with an RPA when it is discovered using AccessorySetupKit?
2
3
488
Sep ’24
AccessorySetupKit and BLE RRA
Currently (as of iOS 18 dev beta 4), if a BLE device supports RRA and the MAC address changes while the ASAccessorySession's picker is displayed a second entry is added to the picker (usually without a friendly name). Once in this state one picker item will work, the other will display a "Cannot Add Accessory" error. Are there any plans to improve this user experience in AccessorySetupKit or do you have any recommendations on how to better handle this use case? We currently have a work around for this in our existing pairing flow but it does not translate to ASDiscoveryDescriptor as it requires comparing previous BLE advertisements.
4
0
550
Jul ’24
AccessorySetupKit
I am trying to setup AccessorySetupKit. I have several questions: Is it possible to setup classic Bluetooth accessory? In documentation you say: "Each display item’s ASDiscoveryDescriptor needs to have a bluetoothCompanyIdentifier or bluetoothNameSubstring, and at least one of the following accessory identifiers: bluetoothServiceUUID Either ssid or ssidPrefix, which needs to have a non-zero length. It’s an error to supply both SSID and SSIDPrefix, and your app crashes if you do. A bluetoothManufacturerDataBlob and bluetoothManufacturerDataMask that are the same length. A bluetoothServiceDataBlob and bluetoothServiceDataMask that are the same length." Is it possible to have only bluetoothCompanyIdentifier and UUID ?
2
0
586
Jul ’24
accessory kit on IOS18
Hi, we are developing a carpooling app. In our app, once, the car driver enters his car, the app connects automatically in the background to the car. The connection to the car is done either via CarPlay or Bluetooth. Currently, when setting up the app, the user has to define how the connection to the car is established. He can choose between three options: either 1)CarPlay, or 2)Bluetooth or 3)both. Is it correct, that starting with the AccessoyKit of IOS18, the user will only have to choose the device, he wants the app to be connected with? However, he no longer has to define the kind of connection, i. e. CarPlay or Bluetooth by which to connect to the device? So in future, users will be able to connect to their Car, but they do not even know, whether the connection is via Bluetooth or CarPlay? If that is the case, it would make our lives much easier;) Many thanks for your help! Greets, Simon
0
0
406
Jul ’24
How to get cycling speed and cadence from natively connected sensors?
When I connect a speed and cadence sensor to my Apple Watch in Bluetooth settings I expect to see the following HKQuantity types in workoutBuilder:(HKLiveWorkoutBuilder *)workoutBuilder didCollectDataOfTypes HKQuantityTypeIdentifierCyclingSpeed, HKQuantityTypeIdentifierDistanceCycling, and HKQuantityTypeIdentifierCyclingCadence. However, after starting an HKWorkoutSession I only get updates for HKQuantityTypeIdentifierDistanceCycling. I know that these metrics are being updated because the Apple Workout app displays them. I have authorized my app to read and write these quantity types, so what could I be missing here? Are these quantities only available to the workout app, as I haven't found a third-party app that sees these metrics when the sensors are connected this way?
0
1
664
Apr ’24
EAWiFiUnconfiguredAccessoryBrowser configureAccessory not showing UI modal up
Hello everyone, I'm trying to configure my WAC device trough an App. This App finds the device without problems using startSearchingForUnconfiguredAccessoriesMatchingPredicate but when I try to use configureAccessory method I get only 3 messages in Xcode and nothing happens. These messages are: 2024-03-14 12:55:56.261969+0000 App[1394:380785] ### WAC: -[EAWiFiUnconfiguredAccessoryBrowserManager configureAccessory:withConfigurationUIOnViewController:]_block_invoke_3:368 Other Region SKU 2024-03-14 12:55:56.266191+0000 App[1394:374248] ### WAC: _notificationCleanup:42 responseFlags: 3 ### WAC: _notificationCleanup:43 responseFlags: 3 For me they don't look like an Error but would be nice if someone could give me some advice on this, I didn't find nothing about it. Thanks in advance!
1
0
660
Mar ’24
BPA 100 Connection/Capture Issues
Hello, I’m trying to use the Frontline Teledyne Lecroy BPA100 Bluetooth Protocol Analyzer with Apples ATS v7.15.0 to capture Bluetooth connections between our device and another companies radio (or troubleshoot the lack thereof more accurately). While the probe physically doesn’t display any signs of life, it does seem to get detected by ATS when I plug it in as the field in ATS Capture “BPA 100/600” autofill’s with “FBA41199”. But it tells me this When I do try to reconnect the probe ATS crashes. Is the device broken?
1
0
621
Mar ’24