Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Note that enabling "Back Tap" will cause a daemon to run in the background all times taking a couple percent CPU (to detect this action, of course). I don't have very good numbers of the battery life impact but my guess is that it's perhaps half an hour or so. Might be worth keeping in mind when deciding whether to enable this feature.


> Note that enabling "Back Tap" will cause a daemon to run in the background all times taking a couple percent CPU

Is this true? I was under the impression that iPhones (and most modern high end devices) had dedicated hardware to monitor these sort of features, and triggers a system event in the OS (the same way you don’t need a daemon to check for a keyboard or power button).


It is, the process is named "AccessibilityUIServer". There is a dedicated motion coprocessor but when the events come back the are plumbed through CoreMotion to a framework called Phoenix, which runs a ML model on them.


Source?

This sounds like bullshit to anyone that knows how interrupts work.


This is a primary source :) Something needs to handle those interrupts. Perhaps this stack trace from the profiler may be enlightening as to what that thing is:

  810 -[AXPhoenixClassifier _handleAccelerometerData:withTimestamp:] 
  563 -[MLModel predictionFromFeatures:error:] 
  561 -[MLNeuralNetworkEngine predictionFromFeatures:options:error:] 
  542 _dispatch_lane_barrier_sync_invoke_and_complete 
  542 _dispatch_client_callout 
  541 __62-[MLNeuralNetworkEngine predictionFromFeatures:options:error:]_block_invoke 
  521 -[MLNeuralNetworkEngine evaluateInputs:options:error:] 
  519 -[MLNeuralNetworkEngine evaluateInputs:options:verifyInputs:error:] 
  491 _dispatch_lane_barrier_sync_invoke_and_complete 
  491 _dispatch_client_callout 
  491 __67-[MLNeuralNetworkEngine evaluateInputs:options:verifyInputs:error:]_block_invoke.195 
  491 -[MLNeuralNetworkEngine evaluateInputs:bufferIndex:options:error:] 
  363 -[MLNeuralNetworkEngine executePlan:error:] 
  359 espresso_plan_execute_sync 
  358 EspressoLight::espresso_plan::execute_sync() 
  351 EspressoLight::espresso_plan::dispatch_task_on_compute_batch(std::__1::shared_ptr<Espresso::abstract_batch> const&, std::__1::shared_ptr<EspressoLight::plan_task_t> const&) 
  296 Espresso::net::__forward(std::__1::shared_ptr<Espresso::abstract_batch> const&, int, int) 
  294 Espresso::net_compiler_segment_based::__forward(std::__1::shared_ptr<Espresso::abstract_batch> const&) 
  290 Espresso::ANERuntimeEngine::compiler::__forward_segment(std::__1::shared_ptr<Espresso::abstract_batch> const&, int, Espresso::net_compiler_segment_based::segment_t const&) 
  254 -[_ANEClient doEvaluateDirectWithModel:options:request:qos:error:] 
  247 -[_ANEProgramForEvaluation processRequest:model:qos:qIndex:modelStringID:options:error:] 
  221 H11ANEProgramProcessRequestDirect 
  214 H11ANE::H11ANEFrameReceiver::ProgramProcessRequest(H11ANE::H11ANEFrameReceiverRequest&, H11ANESharedEventsStruct*, bool) 
  201 H11ANE::H11ANEDevice::ANE_ProgramSendRequest(H11ANEProgramRequestArgsStruct*, unsigned int, bool, H11ANEReqCallbackDataStruct*) 
  200 IOConnectCallAsyncMethod 
  200 io_connect_async_method 
  199 mach_msg2_internal 
  199 mach_msg2_trap


Oh wtf, back tap is implemented with the accelerometer? I assumed the back logo was a touch sensor.

This would make for a really good blog post if you can measure the impact. "Enabling back tap in iOS reduces battery life by half an hour"




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: