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.
Hardware
RSS for tagDelve into the physical components of Apple devices, including processors, memory, storage, and their interaction with the software.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I am working on a Bluetooth Low Energy (BLE) project using the nRF52840 Development Kit (DK), which has been reconfigured to simulate an nRF52805 chip. The firmware is based on Nordic Semiconductor's ble_app_hids_keyboard example, with modifications to implement a BLE HID Gamepad. I am using the S113 SoftDevice and have successfully tested the functionality with Android devices. The gamepad is recognized as a HID device, and it works as expected on Android, verified using the hardwareTester website.
However, when I connect the gamepad to an iPhone via BLE, the same hardwareTester website does not respond as it does on Android, indicating that the iPhone does not recognize the device as a gamepad. The BLE connection is established successfully, but it seems iOS does not interpret the HID report descriptor or the BLE HID service correctly. I suspect there might be compatibility issues with the HID descriptor or the GATT attributes for iOS-specific BLE HID requirements.
I would like to have some help.
i never imagined that an apple product could do such. a thing . i 've updated to the latest version , 15.3 what should i do next time? i've had to restart it three times, the last one finally helped
here is the link https://youtu.be/-aqjzVKMZGA
I have a C++/Objective-C command line application, running on MacOs (15.1.1 (24B91)), that communicates with a Bluetooth LE peripheral. The application is build with Apple clang 16.0.0 and CMake as build system using Boost.Asio.
I'm able to establish a L2CAP channel and after the channel is established, the peripheral sends a first (quite small) SDU on that channel to the application. The PSM is 0x80 and was chosen by the peripherals BLE stack. The application receives the PSM via GATT notification.
I can see the SDU being send in a single LL PDU with Wireshark. I can also see the SDU being received in Apples PacketLogger. But I miss the corresponding call to a stream event handler. For all other GATT related events, the corresponding delegates / callbacks are called.
The code that creates a dispatch queue and passes it to the CBCentralManager looks like this:
dispatch_queue = dispatch_queue_create("de.torrox.ble_event_queue", NULL);
manager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_queue options:nil];
When the L2CAP channel is established, the didOpenL2CAPChannel callback gets called from a thread within the dispatch_queue (has been verified with lldb):
- (void)peripheral:(CBPeripheral *)peripheral
didOpenL2CAPChannel:(CBL2CAPChannel *)channel
error:(NSError *)error
{
[channel inputStream].delegate = self;
[channel outputStream].delegate = self;
[[channel inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[channel outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[[channel inputStream] open];
[[channel outputStream] open];
...
// a reference to the channel is stored in the outside channel object
[channel retain];
...
}
Yet, not a single stream event is generated:
- (void)stream:(NSStream *)stream
handleEvent:(NSStreamEvent)event_code
{
Log( @"stream:handleEvent %@, %lu", stream, event_code );
...
}
When I add a functionality, to poll the input stream, the stream will report the expected L2CAP input. But no event is generated.
The main thread of execution is usually blocking on a boost::asio::io_context::run() call. The design is, to have the stream callback stream:handleEvent to post call back invocations on that io_context, and thus to wake up the main thread and get that callbacks being invoked on the main thread.
All asynchronous GATT delegate calls are working as expected. The only missing events, are the events from the L2CAP streams. The same code worked in an older project on an older version of MacOs and an older version of Boost.
How can I find out, why the stream delegates are not called?
At present, I am using the avfoundation external device API to connect my iPad to a DSLR camera for data collection. On my end, I am using AVCapture Video Data Output to obtain raw data for processing and rendering. However, the pixelbuf returned from the system layer is incomplete, with only a portion cropped in the middle. But using the Mac API is normal. I would like to ask how to obtain the complete pixelbuf of the image on iPad
Currently, we use UIDocumentPickerViewController to read the user's connected sdcard. However, this requires the user to select manually, and the event cannot be monitored.
But recently I found that ImageCaptureCore's ICDeviceBrowserDelegate can monitor the plug-in and unplug events in the didAddDevice callback, but cannot obtain the path of the storage card.
I wonder if there is a way to combine the advantages of both, so that with the user's consent, the card reader events can be monitored and the content can be read directly without the user manually selecting the folder
Hi, could you please help on the following points :
Does iOS supports HCE Felica emulation support in Japan?
Does iOS supports Felica card emulation using NFC & SE platform ?
Thanks
Invalid entitlement for core nfc framework. The sdk version '18.2' and min OS version '14.0' are not compatible for the entitlement 'com.apple.developer.nfc.readersession.formats' because 'NDEF is disallowed'.
Anyone knows what is the correct configuration SDK version and minimum iOS deployment target for NFC that has NDEF format?
I purchased an iPad Pro M4 in early December, and since day one, I’ve been experiencing a recurring issue. Almost every day, at random times, the device freezes for 1–5 minutes and then restarts itself.
The tablet is not under heavy load when this happens — I mainly use it for light tasks such as watching videos in a player or Safari browser, web surfing, and reading books. The issue has even occurred while the iPad was idle and locked; it froze, displayed the Apple logo, and rebooted.
I brought the device back to the store where I purchased it, and they sent it for a diagnostic check. However, the experts concluded that the device is fully functional, and no defects were found. After one of these crashes, I noticed that my Apple Pencil started lagging (see video file IMG_5688.MOV). However, after another reboot, the issue with the Apple Pencil resolved itself.
I’ve documented the issue with several video recordings showing the freezing and rebooting behavior, as well as error logs generated after such incidents.
Device Details:
Model: iPad Pro M4
Usage: Light tasks only (video streaming, web browsing, reading)
Environment: No overheating, no resource-heavy applications running
What could be causing this issue, and how can I resolve it? Any help would be greatly appreciated. Thank you!
P.S. I’ve uploaded all the device logs and videos demonstrating the issue to Google Drive.
https://drive.google.com/drive/folders/1_R0i_iazADWo5EgStrPdgmf1XjgPP_RC?usp=sharing
Trial Rollout: 652eff3d1bce5442b8d753c9 (ramp:654d29cb7e430f0ea5135e4b namespaces:VISUAL_INTELLIGENCE_RICH_LABEL_I18N)
Trial Rollout: 654439cdafbf5b61207873a9 (ramp:65443b27f764584e3e121677 namespaces:SIRI_DATA_SHARING_MTE_OPT_OUT)
Trial Rollout: 6090733d1c1e594b6765e603 (ramp:61f1fd4757c72d21f3fd20dc namespaces:WIRELESS_DATA_ANALYTICS_SIS_FR2HARVESTING)
Trial Rollout: 63f9578e238e7b23a1f3030a (ramp:64af3a8e3789f0013152c6ea namespaces:SMART_REPLY_ACTIONS_EN)
Trial Rollout: 64c17a9925d75a7281053d4c (ramp:64d297de1008ca2fac17a1dc namespaces:SIRI_AUDIO_DISABLE_MEDIA_ENTITY_SYNC)
Trial Rollout: 64628732bf2f5257dedc8988 (ramp:651ca4291993407e6d574317 namespaces:)
Trial Rollout: 6434420a89ec2e0a7a38bf5a (ramp:64c96f230d0abc3f1813bdab namespaces:)
Trial Rollout: 639124e81d92412bfb4880b3 (ramp:63ffdf0ac679dd6bc58280c1 namespaces:SIRI_UNDERSTANDING_TMDC)
Trial Rollout: 6246d6a916a70b047e454124 (ramp:6449728db0bf6a06721af761 namespaces:WALLET_APP_ECOM_PAYMENT_SHEET)
Trial Rollout: 6425c75e4327780c10cc4252 (ramp:642b12bf4327780c10cc42e5 namespaces:SIRI_HOME_AUTOMATION_INTENT_SELECTION_CACHE)
Trial Rollout: 60f8ddccefea4203d95cbeef (ramp:640141a8c679dd6bc5828185 namespaces:)
Trial Rollout: 5f72dc58705eff005a46b3a9 (ramp:63d9571c2cb48e1296b0749a namespaces:SIRI_VIDEO_APP_SELECTION)
Trial Rollout: 5fb4245a1bbfe8005e33a1e1 (ramp:635c675bc8a2104545a56d45 namespaces:)
Trial Rollout: 60356660bbe37970735c5624 (ramp:618b79164b3765609b8b8252 namespaces:)
Trial Rollout: 60da5e84ab0ca017dace9abf (ramp:6137762b61217b31102314aa namespaces:)
Trial Rollout: 6081ed9716bb6d61d81d5014 (ramp:67953013d0a7cc3ee9718297 namespaces:BIFROST_PROD_1)
Trial Rollout: 601074e4af9bef000c169ea8 (ramp:67953105c871785bbdefd35c namespaces:BIFROST_DEV_1)
Trial Rollout: 6761d0c9df60af01adb250fb (ramp:6788a4224ebe024683e5aa2e namespaces:)
Topic:
App & System Services
SubTopic:
Hardware
Iphone 13 stuck on iOS beta 13
cant update it downloads but doesn‘t install have tried using a laptop didn't work my backup won’t work as well
Topic:
App & System Services
SubTopic:
Hardware
Is there any way to use AccessorySetupKit in the background to discover BLE devices?
I'm developing an iPad app and encountered a strange issue with external Bluetooth keyboards.
Issue:
I have a Bluetooth keyboard set to JIS layout in Settings > General > Keyboard > Hardware Keyboard > Keyboard Type.
If I connect the keyboard before launching the app, everything works fine, and the input follows the JIS layout.
However, if I launch the app first and then turn on the Bluetooth keyboard, the input behaves as if the keyboard is in ANSI layout, even though the settings still show JIS.
It seems like iPadOS defaults to ANSI if no external keyboard is connected when the app starts, and later connections do not update the layout properly.
Has anyone encountered a similar issue, and is there a programmatic way to ensure that the correct keyboard layout is applied after the keyboard is connected?
Any help or insights would be greatly appreciated!
Topic:
App & System Services
SubTopic:
Hardware
Hi,
We’re developing a BLE peripheral device and encountered a connection issue when connecting two devices (Device A and Device B) simultaneously to an iOS device.
Problem:
On iOS 18, we are experiencing occasional BLE timeouts and disconnections when both devices are connected at the same time.
On iOS 16, we did not encounter this issue under the same conditions.
What we’ve tried:
Adjusted the connection interval from 30ms to 15ms.
This seems to have improved stability somewhat.
However, we still observe intermittent timeout/disconnection issues.
Questions:
Are there any known changes in BLE connection handling or timing constraints in iOS 18?
Are there recommended connection parameter settings (interval, latency, timeout, etc.) for multi-device BLE connections in iOS?
Is there a way to debug or log more details about the disconnection reasons on the iOS side?
Any guidance or suggestions would be greatly appreciated.
Hi there,
I am using Core NFC and I established the connection with the card, but after sending the command 'tag.sendCommand()' I receive this message:
-[NFCTagReaderSession _connectTag:error:]:748 Error Domain=NFCError Code=2 "Missing required entitlement" UserInfo={NSLocalizedDescription=Missing required entitlement}.
The version of XCode I am using is 16.3, and the iPhone version is iOS 18.4
Here is my entitlements file:
com.apple.developer.nfc.readersession.formats
NDEF
TAG
And my info.plist:
NFCReaderUsageDescription
NFC
com.apple.developer.nfc.readersession.iso7816.select-identifiers
A000112233445566
Signing & Capabilities has added Near Field Communication Tag Reading.
We are integrating the Microsoft Web Chat Control inside a WKWebView in our iOS application. The microphone button (used for speech input) works as expected when the app is active. However, we are facing an issue when the app is sent to the background and then brought back to the foreground.
Issue Details:
When the app returns from background to foreground:
🔹 The mic button becomes unresponsive (taps are not recognized).
🔹 No permission prompt or speech functionality is triggered.
🔹 Other elements of the Web Chat control continue to work fine.
This issue seems isolated to iOS and WKWebView usage.
We have verified that microphone permissions are granted and there are no system-level blocks.
Environment:
Platform: iOS
Web Container: WKWebView
Microsoft Web Chat Version: Devanshu Kinariwala add version here
iOS Version: iOS 18.3.1
Devices: iPhone 13, iPhone 14 Pro
error in browser console
[Error] A MediaStreamTrack ended due to a capture failure (x3)
[Error] WebSocket connection to 'wss://directline.botframework.com/v3/directline/conversations/JQ1k0phVogeJ30ZQddBvAQ-in/stream?watermark=-&t=eyJhbGciOiJSUzI1NiIsImtpZCI6ImlmOEs0aFg4R1hXVnZkS3pwdFRFWFJveURTUSIsIng1dCI6ImlmOEs0aFg4R1hXVnZkS3pwdFRFWFJveURTUSIsInR5cCI6IkpXVCJ9.eyJib3QiOiJhaWFhcy1xYS1jb252YWktYm90Iiwic2l0ZSI6InRWcW14cDBQZU9vIiwiY29udiI6IkpRMWswcGhWb2dlSjMwWlFkZEJ2QVEtaW4iLCJuYmYiOjE3NDI5NzE1MTgsImV4cCI6MTc0Mjk3MTU3OCwiaXNzIjoiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vIiwiYXVkIjoiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vIn0.Mx3MMVP3t9Ex36UW-YARskZLny0iORxc6-B0ewvNp0S-ivUjvOS43kZc0J5HoOgYRkoGaKemo00_JSkzryAbKKoSwqMjahf0VotqTZsJjoIgtyNJFfAYyGVriBHMV_6FfH_YEezDMD5puY6R89eM-atQOw-CfoClwrxn8jgVL5Kn19WdDZvmQwFIArklA7as8bboKcWv4PveEKptM9xCokttaGzv-S5pdbNETMoJzIhLcJDHmEVJ6oJ0TFs5XS7RGMSQlM_gs95TySzVjVL7XV6qEOt_A10lRzmx0PxPIUw_nqllEIbWFy5H7AfsxbKRtM1nLe4lRm1KS7_xw9dSlw' failed: The operation couldn’t be completed. Software caused connection abort
[Error] WebSocket connection to 'wss://eastus2.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed&Ocp-Apim-Subscription-Key=4JuKqIMwLMhgAxfORVDEYfiuTL6Hrbnj3isAeGfs7aks4AOltun6JQQJ99AKACHYHv6XJ3w3AAAYACOGJFYj&X-ConnectionId=A93B097C62F14C55B30A851798609F73' failed: The operation couldn’t be completed. Software caused connection abort
[Error] WebSocket connection to 'wss://eastus2.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed&Ocp-Apim-Subscription-Key=4JuKqIMwLMhgAxfORVDEYfiuTL6Hrbnj3isAeGfs7aks4AOltun6JQQJ99AKACHYHv6XJ3w3AAAYACOGJFYj&X-ConnectionId=E99DF3A6CE734E0294A5FB5296D725CC' failed: The operation couldn’t be completed. Software caused connection abort
[Error] WebSocket connection to 'wss://eastus2.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed&Ocp-Apim-Subscription-Key=4JuKqIMwLMhgAxfORVDEYfiuTL6Hrbnj3isAeGfs7aks4AOltun6JQQJ99AKACHYHv6XJ3w3AAAYACOGJFYj&X-ConnectionId=8B3370005E7A4946BEA174E804F64FF7' failed: The operation couldn’t be completed. Software caused connection abort
Swift: // Method to check microphone permission
func checkMicrophonePermission(completion: @escaping (Bool) -> Void) {
let authorizationStatus = AVCaptureDevice.authorizationStatus(for: .audio)
switch authorizationStatus {
case .authorized:
// Permission granted
completion(true)
case .notDetermined:
// Request permission
AVCaptureDevice.requestAccess(for: .audio) { granted in
DispatchQueue.main.async {
completion(granted)
}
}
case .denied, .restricted:
// Permission denied or restricted
completion(false)
@unknown default:
// Handle future cases
completion(false)
}
}
Topic:
App & System Services
SubTopic:
Hardware
I want to get Cover-Art Image over Bluetooth. From the SDP Discover iPhoneSE, it support Cover-Art Feature.
I connect and config OBEX Channel with L2CAP ERTM, it is successful.
I send connect_request the OBEX Connect, the iPhone always no any response, and l2cap s-frame response from iPhone always failed.
From the Apple Developer, it need Apple Authentication Chip.
Is it still necessary now? Are there any other ways to obtain album pictures?
Hey, I need to know how to use texture mapping for rendering a spectrogram in metal. As I need smoothens the spectrogram. In my current project I am using vertex based approach which results in blocky behaviour between each quad. I need to smooth across each qaud so that It will smoothly gradient over.
Hello,
I recently installed the macOS 26 beta version on my MacBook Air M3, and I've encountered an issue where edited Word files are failing to save. I’ve tried restarting my laptop and checking for updates, but the problem persists.
Has anyone else experienced this issue? Is there a specific setting I might have missed or any troubleshooting steps you recommend?
Thank you for your assistance!
Topic:
App & System Services
SubTopic:
Hardware
The battery drains quickly on iPhone SE 3. Whenever I take it off the charger it drains from 100% to 80% in 20 minutes. Please fix this bug?
Topic:
App & System Services
SubTopic:
Hardware