logo资料库

MFi Accessory Firmware Specification R46.pdf

第1页 / 共598页
第2页 / 共598页
第3页 / 共598页
第4页 / 共598页
第5页 / 共598页
第6页 / 共598页
第7页 / 共598页
第8页 / 共598页
资料共598页,剩余部分请下载后查看
MFi Accessory Firmware Specification
Contents
Figures, Tables, and Listings
Introduction
1. Protocol Features and Availability
1.1 General Apple Device Features
1.2 Audio and Video Output Preferences
1.2.1 Video Output Settings
1.3 Power Management
1.4 Status Notifications
1.4.1 Status Notifications From Apple Devices
1.4.2 Status Notifications From Accessories
1.5 Accessory Control of iOS Devices
1.6 Accessory Launching of iOS Applications
1.7 Accessory Communication With iOS Applications
1.7.1 Setting Up a Communication Session
1.7.2 Data Flow to and from the iOS Device
1.7.3 Backgrounded Applications
1.7.4 Matching Accessories With Applications
1.7.5 Communication Protocol Design Hints
1.7.6 Communication iAP Commands
1.8 Interaction with iOS Media Applications
1.9 Bluetooth Autopairing and Connection Status Notifications
1.10 Wi-Fi Network Login Sharing
1.11 Extended Interface Mode
1.11.1 Entering Extended Interface Mode
1.11.2 Using Extended Interface Mode
1.11.2.1 The Playback Engine
1.11.2.1.1 Playback Behavior
1.11.2.1.2 Playback Status Notifications
1.11.2.2 The Database Engine
1.11.2.2.1 Database Category Hierarchies
1.11.2.2.2 Database Category Counts
1.11.2.2.3 The All Tracks Playlist
1.11.2.2.4 Nested Playlists
1.11.2.2.5 Unexpected Database Changes
1.11.2.3 Transferring Album Art
1.11.2.4 Using Extended Interface Mode: An Example
1.11.2.5 Video Browsing
1.11.2.5.1 Video Playlists
1.11.2.5.2 Video Navigation User Interface
1.11.2.5.3 Navigating Video Playlists
1.11.2.5.4 Video Selection Examples
1.11.2.6 Sample Extended Interface Session
1.11.2.7 Sample Extended Interface Session 2
1.12 iPod Out Mode
1.12.1 Setting iPod Out Video Preferences
1.12.2 Supported Simple Remote and Display Remote Commands
1.13 VoiceOver
1.14 AssistiveTouch
1.15 iTunes Tagging
1.15.1 The iTunes Tagging Experience
1.15.2 Tagging Feature Components
1.16 Nike + iPod Cardio Equipment System
2. Protocol Core
2.1 Reserved Commands and Data
2.2 Transport Initialization
2.2.1 UART
2.2.2 USB Host Mode
2.2.2.1 Entering USB Host Mode on Startup
2.2.2.2 Upgrading from UART Transport to USB Host Mode
2.2.2.3 Packet Formats for iAP Commands
2.2.2.4 Data Transfers With an Apple Device
2.2.2.4.1 Sample Data Transfer to an Apple device
2.2.2.5 Optimizing Data Transfers
2.2.3 USB Device Mode
2.2.4 Bluetooth Transport
2.3 Identification
2.3.1 IDPS Commands
2.3.2 The IDPS Process
2.3.2.1 Starting IDPS
2.3.2.2 Completing IDPS
2.3.3 Determining Apple Device Capabilities
2.3.3.1 Apple Devices That Require IdentifyDeviceLingoes
2.3.4 Sample IDPS Command Sequences
2.4 Authentication
2.4.1 Levels of Accessory Authentication
2.4.2 Authentication Requirements
2.4.3 Apple Device Authentication of the Accessory
2.4.4 Accessory Authentication of the Apple Device
2.5 Command Packets
2.5.1 Start of Packet Field
2.5.2 Payload Length Field
2.5.3 Checksum Byte
2.6 Transaction IDs
2.6.1 Using Transaction IDs
2.6.1.1 Generating and Returning Transaction IDs
2.6.1.2 Enabling and Disabling Transaction ID Support
2.6.1.3 Apple Device Acknowledgment of Transaction ID Commands
2.6.1.4 Applicability of Transaction IDs
2.6.2 Examples of Transaction IDs
2.7 Multisection Data Transfers
2.7.1 Multisection Transfer Process
2.7.2 Interleaved Transfers
2.8 Apple Device Language
2.9 Character Encoding
3. The General Lingo
3.1 General Lingo Command Summary
3.2 History of the General lingo protocol
3.3 General Lingo Commands
3.3.1 Command 0x00: RequestIdentify
3.3.2 Command 0x02: iPodAck
3.3.3 Command 0x03: RequestExtendedInterfaceMode
3.3.4 Command 0x04: ReturnExtendedInterfaceMode
3.3.5 Command 0x06: ExitExtendedInterfaceMode
3.3.6 Command 0x07: RequestiPodName
3.3.7 Command 0x08: ReturniPodName
3.3.8 Command 0x09: RequestiPodSoftwareVersion
3.3.9 Command 0x0A: ReturniPodSoftwareVersion
3.3.10 Command 0x0B: RequestiPodSerialNum
3.3.11 Command 0x0C: ReturniPodSerialNum
3.3.12 Command 0x0F: RequestLingoProtocolVersion
3.3.13 Command 0x10: ReturnLingoProtocolVersion
3.3.14 Command 0x11: RequestTransportMaxPayloadSize
3.3.15 Command 0x12: ReturnTransportMaxPayloadSize
3.3.16 Command 0x13: IdentifyDeviceLingoes
3.3.16.1 Canceling a Current Authentication Process With IdentifyDeviceLingoes
3.3.17 Command 0x14: GetAccessoryAuthenticationInfo
3.3.18 Command 0x15: RetAccessoryAuthenticationInfo
3.3.19 Command 0x16: AckAccessoryAuthenticationInfo
3.3.20 Command 0x17: GetAccessoryAuthenticationSignature
3.3.21 Command 0x18: RetAccessoryAuthenticationSignature
3.3.22 Command 0x19: AckAccessoryAuthenticationStatus
3.3.23 Command 0x1A: GetiPodAuthenticationInfo
3.3.24 Command 0x1B: RetiPodAuthenticationInfo
3.3.25 Command 0x1C: AckiPodAuthenticationInfo
3.3.26 Command 0x1D: GetiPodAuthenticationSignature
3.3.27 Command 0x1E: RetiPodAuthenticationSignature
3.3.28 Command 0x1F: AckiPodAuthenticationStatus
3.3.29 Command 0x23: NotifyiPodStateChange
3.3.30 Command 0x24: GetiPodOptions
3.3.31 Command 0x25: RetiPodOptions
3.3.32 Command 0x27: GetAccessoryInfo
3.3.33 Command 0x28: RetAccessoryInfo
3.3.34 Command 0x29: GetiPodPreferences
3.3.35 Command 0x2A: RetiPodPreferences
3.3.36 Command 0x2B: SetiPodPreferences
3.3.37 Command 0x35: GetUIMode
3.3.38 Command 0x36: RetUIMode
3.3.39 Command 0x37: SetUIMode
3.3.40 Command 0x38: StartIDPS
3.3.41 Command 0x39: SetFIDTokenValues
3.3.42 Command 0x3A: AckFIDTokenValues
3.3.43 Command 0x3B: EndIDPS
3.3.44 Command 0x3C: IDPSStatus
3.3.45 Command 0x3F: OpenDataSessionForProtocol
3.3.46 Command 0x40: CloseDataSession
3.3.47 Command 0x41: AccessoryAck
3.3.48 Command 0x42: AccessoryDataTransfer
3.3.49 Command 0x43: iPodDataTransfer
3.3.50 Command 0x46: SetAccessoryStatusNotification
3.3.51 Command 0x47: RetAccessoryStatusNotification
3.3.52 Command 0x48: AccessoryStatusNotification
3.3.53 Command 0x49: SetEventNotification
3.3.54 Command 0x4A: iPodNotification
3.3.55 Command 0x4B: GetiPodOptionsForLingo
3.3.56 Command 0x4C: RetiPodOptionsForLingo
3.3.57 Command 0x4D: GetEventNotification
3.3.58 Command 0x4E: RetEventNotification
3.3.59 Command 0x4F: GetSupportedEventNotification
3.3.60 Command 0x50: CancelCommand
3.3.61 Command 0x51: RetSupportedEventNotification
3.3.62 Command 0x54: SetAvailableCurrent
3.3.63 Command 0x56: SetInternalBatteryChargingState
3.3.64 Command 0x64: RequestApplicationLaunch
3.3.65 Command 0x65: GetNowPlayingApplicationBundleName
3.3.66 Command 0x66: RetNowPlayingApplicationBundleName
3.3.67 Command 0x67: GetLocalizationInfo
3.3.68 Command 0x68: RetLocalizationInfo
3.3.69 Command 0x69: RequestWiFiConnectionInfo
3.3.70 Command 0x6A: WiFiConnectionInfo
4. Additional Lingoes
4.1 Command Timings
4.2 Lingo 0x02: Simple Remote Lingo
4.2.1 History and Applicability
4.2.2 Playback Engine Playlists
4.2.3 Using Contextual Buttons
4.2.4 Using Dedicated Media Buttons
4.2.5 Accessory Control of the iPod 5G nano Camera
4.2.5.1 5G nano Camera Modes
4.2.5.2 Camera Sessions
4.2.5.3 Accessory Feedback
4.2.5.4 Camera Accessory Identification
4.2.5.5 Camera Interface Commands
4.2.5.6 Sample Command Sequences
4.2.5.6.1 Scenario 1: Video Control On and Off by the Accessory
4.2.5.6.2 Scenario 2: Video Control On by the iPod and Off by the Accessory
4.2.6 USB Human Interface Device Reports
4.2.7 Command 0x00: ContextButtonStatus
4.2.8 Command 0x01: iPodAck
4.2.9 Command 0x03: VideoButtonStatus
4.2.10 Command 0x04: AudioButtonStatus
4.2.11 Command 0x0B: iPodOutButtonStatus
4.2.12 Command 0x0C: RotationInputStatus
4.2.12.1 Examples of Using RotationInputStatus
4.2.12.1.1 Example with a Detent Wheel
4.2.13 Command 0x0D: RadioButtonStatus
4.2.14 Command 0x0E: CameraButtonStatus
4.2.15 Command 0x0F: RegisterDescriptor
4.2.16 Command 0x10: iPodHIDReport
4.2.17 Command 0x11: AccessoryHIDReport
4.2.18 Command 0x12: UnregisterDescriptor
4.2.19 Command 0x13: VoiceOverEvent
4.2.20 Command 0x14: GetVoiceOverParameter
4.2.21 Command 0x15: RetVoiceOverParameter
4.2.22 Command 0x16: SetVoiceOverParameter
4.2.23 Command 0x17: GetCurrentVoiceOverItemProperty
4.2.24 Command 0x18: RetCurrentVoiceOverItemProperty
4.2.25 Command 0x19: SetVoiceOverContext
4.2.26 Command 0x1A: VoiceOverParameterChanged
4.2.27 Command 0x81: AccessoryAck
4.3 Lingo 0x03: Display Remote Lingo
4.3.1 Command History of the Display Remote lingo
4.3.2 Transferring Album Art
4.3.3 Command 0x00: iPodAck
4.3.4 Command 0x01: GetCurrentEQProfileIndex
4.3.5 Command 0x02: RetCurrentEQProfileIndex
4.3.6 Command 0x03: SetCurrentEQProfileIndex
4.3.7 Command 0x04: GetNumEQProfiles
4.3.8 Command 0x05: RetNumEQProfiles
4.3.9 Command 0x06: GetIndexedEQProfileName
4.3.10 Command 0x07: RetIndexedEQProfileName
4.3.11 Command 0x08: SetRemoteEventNotification
4.3.12 Command 0x09: RemoteEventNotification
4.3.13 Command 0x0A: GetRemoteEventStatus
4.3.14 Command 0x0B: RetRemoteEventStatus
4.3.15 Command 0x0C: GetiPodStateInfo
4.3.16 Command 0x0D: RetiPodStateInfo
4.3.17 Command 0x0E: SetiPodStateInfo
4.3.18 Command 0x0F: GetPlayStatus
4.3.19 Command 0x10: RetPlayStatus
4.3.20 Command 0x11: SetCurrentPlayingTrack
4.3.21 Command 0x12: GetIndexedPlayingTrackInfo
4.3.22 Command 0x13: RetIndexedPlayingTrackInfo
4.3.23 Command 0x14: GetNumPlayingTracks
4.3.24 Command 0x15: RetNumPlayingTracks
4.3.25 Command 0x16: GetArtworkFormats
4.3.26 Command 0x17: RetArtworkFormats
4.3.27 Command 0x18: GetTrackArtworkData
4.3.28 Command 0x19: RetTrackArtworkData
4.3.29 Command 0x1A: GetPowerBatteryState
4.3.30 Command 0x1B: RetPowerBatteryState
4.3.31 Command 0x1C: GetSoundCheckState
4.3.32 Command 0x1D: RetSoundCheckState
4.3.33 Command 0x1E: SetSoundCheckState
4.3.34 Command 0x1F: GetTrackArtworkTimes
4.3.35 Command 0x20: RetTrackArtworkTimes
4.3.36 Command 0x21: CreateGeniusPlaylist
4.3.37 Command 0x22: IsGeniusAvailableForTrack
4.4 Lingo 0x04: Extended Interface Lingo
4.5 Lingo 0x05: Accessory Power Lingo
4.6 Lingo 0x06: USB Host Mode Lingo
4.6.1 Command History of the USB Host Lingoes
4.6.2 Command 0x00: AccessoryAck
4.6.3 Command 0x04: NotifyUSBMode
4.6.4 Command 0x80: iPodAck
4.6.5 Command 0x81: GetiPodUSBMode
4.6.6 Command 0x82: RetiPodUSBMode
4.6.7 Command 0x83: SetiPodUSBMode
4.7 Lingo 0x07: RF Tuner Lingo
4.7.1 RF Tuner Accessory Design
4.7.2 RF Tuner Power
4.7.3 RF Tuner Lingo Commands
4.7.4 Command History of the RF Tuner Lingo
4.7.5 Command 0x00: AccessoryAck
4.7.6 Command 0x01: GetTunerCaps
4.7.7 Command 0x02: RetTunerCaps
4.7.8 Command 0x03: GetTunerCtrl
4.7.9 Command 0x04: RetTunerCtrl
4.7.10 Command 0x05: SetTunerCtrl
4.7.11 Command 0x06: GetTunerBand
4.7.12 Command 0x07: RetTunerBand
4.7.13 Command 0x08: SetTunerBand
4.7.14 Command 0x09: GetTunerFreq
4.7.15 Command 0x0A: RetTunerFreq
4.7.16 Command 0x0B: SetTunerFreq
4.7.17 Command 0x0C: GetTunerMode
4.7.18 Command 0x0D: RetTunerMode
4.7.19 Command 0x0E: SetTunerMode
4.7.20 Command 0x0F: GetTunerSeekRssi
4.7.21 Command 0x10: RetTunerSeekRssi
4.7.22 Command 0x11: SetTunerSeekRssi
4.7.23 Command 0x12: TunerSeekStart
4.7.24 Command 0x13: TunerSeekDone
4.7.25 Command 0x14: GetTunerStatus
4.7.26 Command 0x15: RetTunerStatus
4.7.27 Command 0x16: GetStatusNotifyMask
4.7.28 Command 0x17: RetStatusNotifyMask
4.7.29 Command 0x18: SetStatusNotifyMask
4.7.30 Command 0x19: StatusChangeNotify
4.7.31 Command 0x1A: GetRdsReadyStatus
4.7.32 Command 0x1B: RetRdsReadyStatus
4.7.33 Command 0x1C: GetRdsData
4.7.34 Command 0x1D: RetRdsData
4.7.35 Command 0x1E: GetRdsNotifyMask
4.7.36 Command 0x1F: RetRdsNotifyMask
4.7.37 Command 0x20: SetRdsNotifyMask
4.7.38 Command 0x21: RdsReadyNotify
4.7.39 Command 0x25: GetHDProgramServiceCount
4.7.40 Command 0x26: RetHDProgramServiceCount
4.7.41 Command 0x27: GetHDProgramService
4.7.42 Command 0x28: RetHDProgramService
4.7.43 Command 0x29: SetHDProgramService
4.7.44 Command 0x2A: GetHDDataReadyStatus
4.7.45 Command 0x2B: RetHDDataReadyStatus
4.7.46 Command 0x2C: GetHDData
4.7.47 Command 0x2D: RetHDData
4.7.48 Command 0x2E: GetHDDataNotifyMask
4.7.49 Command 0x2F: RetHDDataNotifyMask
4.7.50 Command 0x30: SetHDDataNotifyMask
4.7.51 Command 0x31: HDDataReadyNotify
4.7.52 Sample HD Command Sequences
4.7.52.1 Initializing HD Radio
4.7.52.2 HD Radio Tuning and Reception
4.7.52.3 HD Radio Service Management
4.8 Lingo 0x08: Accessory Equalizer Lingo
4.8.1 Equalizer Setting Requirements
4.8.2 Accessory Equalizer Lingo Commands
4.8.2.1 Command History of the Accessory Equalizer Lingo
4.8.3 Command 0x00: AccessoryAck
4.8.4 Command 0x01: GetCurrentEQIndex
4.8.5 Command 0x02: RetCurrentEQIndex
4.8.6 Command 0x03: SetCurrentEQIndex
4.8.7 Command 0x04: GetEQSettingCount
4.8.8 Command 0x05: RetEQSettingCount
4.8.9 Command 0x06: GetEQIndexName
4.8.10 Command 0x07: RetEQIndexName
4.9 Lingo 0x09: Sports Lingo
4.9.1 Sports Lingo commands
4.9.2 Command History of the Sports Lingo
4.9.3 Command 0x00: AccessoryAck
4.9.4 Command 0x01: GetAccessoryVersion
4.9.5 Command 0x02: RetAccessoryVersion
4.9.6 Command 0x03: GetAccessoryCaps
4.9.7 Command 0x04: RetAccessoryCaps
4.9.8 Command 0x80: iPodAck
4.9.9 Command 0x83: GetiPodCaps
4.9.10 Command 0x84: RetiPodCaps
4.9.11 Command 0x85: GetUserIndex
4.9.12 Command 0x86: RetUserIndex
4.9.13 Command 0x88: GetUserData
4.9.14 Command 0x89: RetUserData
4.9.15 Command 0x8A: SetUserData
4.10 Lingo 0x0A: Digital Audio Lingo
4.10.1 Accessory Authentication
4.10.2 Digital Audio Lingo Commands
4.10.3 Command History of the Digital Audio Lingo
4.10.4 USB Device Mode Audio
4.10.4.1 Digital Audio and Extended Interface Mode
4.10.4.2 Audio/Video Synchronization
4.10.4.3 Line Level Output
4.10.4.4 Enabling and Disabling USB Device Mode Audio
4.10.4.5 USB Device Mode Audio Errors on Older Apple Devices
4.10.5 Command 0x00: AccessoryAck
4.10.6 Command 0x01: iPodAck
4.10.7 Command 0x02: GetAccessorySampleRateCaps
4.10.8 Command 0x03: RetAccessorySampleRateCaps
4.10.9 Command 0x04: TrackNewAudioAttributes
4.10.10 Command 0x05: SetVideoDelay
4.11 Lingo 0x0C: Storage Lingo
4.11.1 Command History of the Storage Lingo
4.11.2 Command Summary
4.11.3 Command 0x00: iPodAck
4.11.4 Command 0x01: GetiPodCaps
4.11.5 Command 0x02: RetiPodCaps
4.11.6 Command 0x04: RetiPodFileHandle
4.11.7 Command 0x07: WriteiPodFileData
4.11.8 Command 0x08: CloseiPodFile
4.11.9 Command 0x10: GetiPodFreeSpace
4.11.10 Command 0x11: RetiPodFreeSpace
4.11.11 Command 0x12: OpeniPodFeatureFile
4.11.12 Command 0x80: AccessoryAck
4.11.13 Command 0x81: GetAccessoryCaps
4.11.14 Command 0x82: RetAccessoryCaps
4.12 Lingo 0x0D: iPod Out Lingo
4.12.1 Command History of the iPod Out Lingo
4.12.2 iPod Out Lingo Commands
4.12.3 Command 0x00: iPodAck
4.12.4 Command 0x01: GetiPodOutOptions
4.12.5 Command 0x02: RetiPodOutOptions
4.12.6 Command 0x03: SetiPodOutOptions
4.12.7 Command 0x04: AccessoryStateChangeEvent
4.13 Lingo 0x0E: Location Lingo
4.13.1 Location Data Requirements
4.13.2 Power from the Apple Device for Accessories Using the Location Lingo
4.13.3 Command Summary
4.13.4 A Typical Location Data Session
4.13.5 Command 0x00: AccessoryAck
4.13.5.1 Multisection AccessoryAck Packet
4.13.6 Command 0x01: GetAccessoryCaps
4.13.7 Command 0x02: RetAccessoryCaps
4.13.8 Command 0x03: GetAccessoryControl
4.13.9 Command 0x04: RetAccessoryControl
4.13.10 Command 0x05: SetAccessoryControl
4.13.11 Command 0x06: GetAccessoryData
4.13.12 Command 0x07: RetAccessoryData
4.13.13 Command 0x08: SetAccessoryData
4.13.14 Command 0x09: AsyncAccessoryData
4.13.15 Command 0x80: iPodAck
4.13.15.1 Multisection iPodAck Command
4.14 Sample Identification Sequences
5. Extended Interface Mode
5.1 Command Packets
5.1.1 Command Code Summary
5.1.2 Command 0x0001: iPodAck
5.1.3 Command 0x0002: GetCurrentPlayingTrackChapterInfo
5.1.4 Command 0x0003: ReturnCurrentPlayingTrackChapterInfo
5.1.5 Command 0x0004: SetCurrentPlayingTrackChapter
5.1.6 Command 0x0005: GetCurrentPlayingTrackChapterPlayStatus
5.1.7 Command 0x0006: ReturnCurrentPlayingTrackChapterPlayStatus
5.1.8 Command 0x0007: GetCurrentPlayingTrackChapterName
5.1.9 Command 0x0008: ReturnCurrentPlayingTrackChapterName
5.1.10 Command 0x0009: GetAudiobookSpeed
5.1.11 Command 0x000A: ReturnAudiobookSpeed
5.1.12 Command 0x000B: SetAudiobookSpeed
5.1.13 Command 0x000C: GetIndexedPlayingTrackInfo
5.1.14 Command 0x000D: ReturnIndexedPlayingTrackInfo
5.1.15 Command 0x000E: GetArtworkFormats
5.1.16 Command 0x000F: RetArtworkFormats
5.1.17 Command 0x0010: GetTrackArtworkData
5.1.18 Command 0x0011: RetTrackArtworkData
5.1.19 Command 0x0016: ResetDBSelection
5.1.20 Command 0x0017: SelectDBRecord
5.1.21 Command 0x0018: GetNumberCategorizedDBRecords
5.1.22 Command 0x0019: ReturnNumberCategorizedDBRecords
5.1.23 Command 0x001A: RetrieveCategorizedDatabaseRecords
5.1.24 Command 0x001B: ReturnCategorizedDatabaseRecord
5.1.25 Command 0x001C: GetPlayStatus
5.1.26 Command 0x001D: ReturnPlayStatus
5.1.27 Command 0x001E: GetCurrentPlayingTrackIndex
5.1.28 Command 0x001F: ReturnCurrentPlayingTrackIndex
5.1.29 Command 0x0020: GetIndexedPlayingTrackTitle
5.1.30 Command 0x0021: ReturnIndexedPlayingTrackTitle
5.1.31 Command 0x0022: GetIndexedPlayingTrackArtistName
5.1.32 Command 0x0023: ReturnIndexedPlayingTrackArtistName
5.1.33 Command 0x0024: GetIndexedPlayingTrackAlbumName
5.1.34 Command 0x0025: ReturnIndexedPlayingTrackAlbumName
5.1.35 Command 0x0026: SetPlayStatusChangeNotification
5.1.36 Command 0x0027: PlayStatusChangeNotification
5.1.37 Command 0x0029: PlayControl
5.1.38 Command: 0x002A: GetTrackArtworkTimes
5.1.39 Command: 0x002B: RetTrackArtworkTimes
5.1.40 Command 0x002C: GetShuffle
5.1.41 Command 0x002D: ReturnShuffle
5.1.42 Command 0x002E: SetShuffle
5.1.43 Command 0x002F: GetRepeat
5.1.44 Command 0x0030: ReturnRepeat
5.1.45 Command 0x0031: SetRepeat
5.1.46 Command 0x0032: SetDisplayImage
5.1.46.1 Display Pixel Format 0x01
5.1.46.2 Display Pixel Formats 0x02 and 0x03
5.1.47 Command 0x0033: GetMonoDisplayImageLimits
5.1.48 Command 0x0034: ReturnMonoDisplayImageLimits
5.1.49 Command 0x0035: GetNumPlayingTracks
5.1.50 Command 0x0036: ReturnNumPlayingTracks
5.1.51 Command 0x0037: SetCurrentPlayingTrack
5.1.52 Command 0x0039: GetColorDisplayImageLimits
5.1.53 Command 0x003A: ReturnColorDisplayImageLimits
5.1.54 Command 0x003B: ResetDBSelectionHierarchy
5.1.55 Command 0x003C: GetDBiTunesInfo
5.1.56 Command 0x003D: RetDBiTunesInfo
5.1.57 Command 0x003E: GetUIDTrackInfo
5.1.58 Command 0x003F: RetUIDTrackInfo
5.1.59 Command 0x0040: GetDBTrackInfo
5.1.60 Command 0x0041: RetDBTrackInfo
5.1.61 Command 0x0042: GetPBTrackInfo
5.1.62 Command 0x0043: RetPBTrackInfo
5.1.63 Command 0x0044: CreateGeniusPlaylist
5.1.64 Command 0x0045: RefreshGeniusPlaylist
5.1.65 Command 0x0047: IsGeniusAvailableForTrack
5.1.66 Command 0x0048: GetPlaylistInfo
5.1.67 Command 0x0049: RetPlaylistInfo
5.1.68 Command 0x004A: PrepareUIDList
5.1.69 Command 0x004B: PlayPreparedUIDList
5.1.70 Command 0x004C: GetArtworkTimes
5.1.71 Command 0x004D: RetArtworkTimes
5.1.72 Command 0x004E: GetArtworkData
5.1.73 Command 0x004F: RetArtworkData
5.2 Known Issues
5.3 Protocol History
Appendix A: A. iTunes Tagging Accessory Design
A.1 Accessory Requirements
A.2 Capturing and Storing Tag Data
A.2.1 Resolving Tag Ambiguity
A.2.2 Handling Unknown Metadata Types
A.2.3 Tag Data Writing Process
A.2.4 Data Transfer to the Apple Device
A.3 Accessory User Interface
A.3.1 Tag Button Text
A.4 Sample Command Sequence
A.5 FM Radio Tagging
A.5.1 The RT+ ODA
A.5.2 The iTunes Tagging ODA
A.5.3 Use of the RDS Group Type 3A
A.5.4 Tagging Application Group
A.5.5 Normal Mode and Test Mode
A.5.6 FM Tagging Event Control
A.5.7 FM Tag Decryption
A.6 HD Radio Tagging
A.7 Satellite Radio Tagging
A.8 Other Broadcast Tagging
A.9 Sample Tag Files
A.9.1 FM Radio Sample
A.9.2 HD Radio Samples
A.9.3 Satellite Radio Sample
Appendix B: B. Nike + iPod Cardio Accessory Design
B.1 Cardio Equipment Requirements
B.1.1 Determining Apple Device Support for Cardio Equipment
B.1.2 Identification Procedure
B.1.2.1 Sample Identification Processes
B.1.3 Declaring Cardio Equipment Support to the Apple Device
B.1.4 Accessing User Data
B.1.5 Recording Workout Data
B.1.5.1 Writing Workout Data
B.1.5.2 Workout Events
B.1.5.3 File System Full
B.1.5.4 File Writing Error Recovery
B.1.5.5 Recording a Workout Already in Progress
B.1.6 XML Element Formats
B.2 User Interface Requirements
B.2.1 The Apple Device Does Not Support Nike + iPod
B.2.2 Deciding to Record a Workout to the Apple Device
B.2.3 The Apple Device is Full
B.2.4 User Weight
B.2.5 Recording Indicator
B.2.6 Workout Completed
B.3 Sample Command Sequence
Appendix C: C. Historical Information
C.1 Past Protocol Features
C.2 The 3G iPod
C.2.1 General Compatibility With Accessories
C.2.2 Accessory Identification and iAP Commands
C.2.3 User Interface Restrictions
C.3 9-Pin Audio/Remote Connector Commands
C.3.1 Command 0x00: BeginRecord
C.3.2 Command 0x01: EndRecord
C.3.3 Command 0x02: BeginPlayback
C.3.4 Command 0x03: EndPlayback
C.4 Deprecated General Lingo Commands
C.4.1 General Lingo Command 0x01: Identify
C.4.2 Command 0x05: EnterExtendedInterfaceMode
C.5 Deprecated Lingo 0x01: Microphone Lingo
C.5.1 Command History of the Microphone Lingo
C.5.2 Command 0x04: AccessoryAck
C.5.3 Command 0x05: GetAccessoryAck
C.5.4 Command 0x06: iPodModeChange
C.5.5 Command 0x07: GetAccessoryCaps
C.5.6 Command 0x08: RetAccessoryCaps
C.5.7 Command 0x09: GetAccessoryCtrl
C.5.8 Command 0x0A: RetAccessoryCtrl
C.5.9 Command 0x0B: SetAccessoryCtrl
C.5.10 Deprecated MicrophoneCapsToken
C.6 Deprecated Simple Remote Lingo Command
C.6.1 Command 0x02: ImageButtonStatus
C.7 Deprecated Extended Interface Commands
C.7.1 Command 0x0012: RequestProtocolVersion
C.7.2 Command 0x0013: ReturnProtocolVersion
C.7.3 Command 0x0014: RequestiPodName
C.7.4 Command 0x0015: ReturniPodName
C.7.5 Command 0x0028: PlayCurrentSelection
C.7.6 Command 0x0038: SelectSortDBRecord
C.8 Deprecated Lingo 0x05: Accessory Power Lingo
C.8.1 Command History of the Accessory Power lingo
C.8.2 Command 0x02: BeginHighPower
C.8.3 Command 0x03: EndHighPower
C.9 Deprecated USB Host Control Commands
C.9.1 Command 0x00: AccessoryAck
C.9.2 Command 0x01: GetUSBPowerState
C.9.3 Command 0x02: RetUSBPowerState
C.9.4 Command 0x03: SetUSBPowerState
C.10 Deprecated iPod Out Lingo Command
C.10.1 Command 0x06: DevVideoScreenInfo
C.11 Authentication 1.0 Sample Command Sequence
C.12 Accessory Identification With Non-IDPS Apple Devices
Glossary
Revision History
MFi Accessory Firmware Specification Release R46 2012-09-12
IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used under license. Times is a registered trademark of Heidelberger Druckmaschinen AG, available from Linotype Library GmbH. Simultaneously published in the United States and Canada. Even though Apple has reviewed this document, APPLE MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS DOCUMENT, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS DOCUMENT IS PROVIDED “AS IS,” AND YOU, THE READER, ARE ASSUMING THE ENTIRE RISK AS TO ITS QUALITY AND ACCURACY. IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS DOCUMENT, even if advised of the possibility of such damages. THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL OR WRITTEN, EXPRESS OR IMPLIED. No Apple dealer, agent, or employee is authorized to make any modification, extension, or addition to this warranty. Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you. This warranty gives you specific legal rights, and you may also have other rights which vary from state to state. Apple Inc. © 2012 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, mechanical, electronic, photocopying, recording, or otherwise, without prior written permission of Apple Inc., with the following exceptions: Any person is hereby authorized to store documentation on a single computer for personal use only and to print copies of documentation for personal use provided that the documentation contains Apple’s copyright notice. The Apple logo is a trademark of Apple Inc. Use of the “keyboard” Apple logo (Option-Shift-K) for commercial purposes without the prior written consent of Apple may constitute trademark infringement and unfair competition in violation of federal and state laws. No licenses, express or implied, are granted with respect to any of the technology described in this document. Apple retains all intellectual property rights associated with the technology described in this document. This document is intended to assist application developers to develop applications only for Apple-labeled computers. Every effort has been made to ensure that the information in this document is accurate. Apple is not responsible for typographical errors. Apple Inc. 1 Infinite Loop Cupertino, CA 95014 408-996-1010 App Store is a service mark of Apple Inc. Genius is a registered service mark of Apple Inc. iTunes Store is a registered service mark of Apple Inc. Apple, the Apple logo, Cocoa, FireWire, iBook, iPhone, iPod, iPod classic, iPod nano, iPod shuffle, iPod touch, iTunes, Mac, Mac OS, Macintosh, Numbers, OS X, Pages, and Spotlight are trademarks of Apple Inc., registered in the United States and other countries. iPad, QuickStart, and Siri are trademarks of Apple Inc.
Contents Introduction 0. Introduction 31 Organization of This Document 37 0.1 General Specification Terms 38 0.2 Special Terminology 38 See Also 39 Chapter 1 1. Protocol Features and Availability 41 1.1 General Apple Device Features 44 1.2 Audio and Video Output Preferences 47 1.2.1 Video Output Settings 47 1.3 Power Management 48 1.4 Status Notifications 48 1.4.1 Status Notifications From Apple Devices 48 1.4.2 Status Notifications From Accessories 49 1.5 Accessory Control of iOS Devices 49 1.6 Accessory Launching of iOS Applications 50 1.7 Accessory Communication With iOS Applications 50 1.7.1 Setting Up a Communication Session 51 1.7.2 Data Flow to and from the iOS Device 52 1.7.3 Backgrounded Applications 52 1.7.4 Matching Accessories With Applications 52 1.7.5 Communication Protocol Design Hints 52 1.7.6 Communication iAP Commands 53 1.8 Interaction with iOS Media Applications 54 1.9 Bluetooth Autopairing and Connection Status Notifications 55 1.10 Wi-Fi Network Login Sharing 56 1.11 Extended Interface Mode 56 1.11.1 Entering Extended Interface Mode 57 1.11.2 Using Extended Interface Mode 57 1.12 iPod Out Mode 78 1.12.1 Setting iPod Out Video Preferences 80 1.12.2 Supported Simple Remote and Display Remote Commands 80 1.13 VoiceOver 81 1.14 AssistiveTouch 82 1.15 iTunes Tagging 83 1.15.1 The iTunes Tagging Experience 83 1.15.2 Tagging Feature Components 83 1.16 Nike + iPod Cardio Equipment System 85 2012-09-12 | © 2012 Apple Inc. All Rights Reserved. 3
CONTENTS Chapter 2 2. Protocol Core 87 2.1 Reserved Commands and Data 87 2.2 Transport Initialization 88 2.2.1 UART 88 2.2.2 USB Host Mode 88 2.2.3 USB Device Mode 93 2.2.4 Bluetooth Transport 93 2.3 Identification 93 2.3.1 IDPS Commands 94 2.3.2 The IDPS Process 94 2.3.3 Determining Apple Device Capabilities 97 2.3.4 Sample IDPS Command Sequences 98 2.4 Authentication 103 2.4.1 Levels of Accessory Authentication 103 2.4.2 Authentication Requirements 104 2.4.3 Apple Device Authentication of the Accessory 106 2.4.4 Accessory Authentication of the Apple Device 108 2.5 Command Packets 109 2.5.1 Start of Packet Field 109 2.5.2 Payload Length Field 110 2.5.3 Checksum Byte 110 2.6 Transaction IDs 110 2.6.1 Using Transaction IDs 110 2.6.2 Examples of Transaction IDs 112 2.7 Multisection Data Transfers 116 2.7.1 Multisection Transfer Process 116 2.7.2 Interleaved Transfers 117 2.8 Apple Device Language 117 2.9 Character Encoding 117 Chapter 3 3. The General Lingo 119 3.1 General Lingo Command Summary 119 3.2 History of the General lingo protocol 123 3.3 General Lingo Commands 124 3.3.1 Command 0x00: RequestIdentify 124 3.3.2 Command 0x02: iPodAck 124 3.3.3 Command 0x03: RequestExtendedInterfaceMode 127 3.3.4 Command 0x04: ReturnExtendedInterfaceMode 127 3.3.5 Command 0x06: ExitExtendedInterfaceMode 128 3.3.6 Command 0x07: RequestiPodName 128 3.3.7 Command 0x08: ReturniPodName 129 3.3.8 Command 0x09: RequestiPodSoftwareVersion 129 3.3.9 Command 0x0A: ReturniPodSoftwareVersion 130 3.3.10 Command 0x0B: RequestiPodSerialNum 130 4 2012-09-12 | © 2012 Apple Inc. All Rights Reserved.
CONTENTS 3.3.11 Command 0x0C: ReturniPodSerialNum 130 3.3.12 Command 0x0F: RequestLingoProtocolVersion 131 3.3.13 Command 0x10: ReturnLingoProtocolVersion 131 3.3.14 Command 0x11: RequestTransportMaxPayloadSize 132 3.3.15 Command 0x12: ReturnTransportMaxPayloadSize 132 3.3.16 Command 0x13: IdentifyDeviceLingoes 133 3.3.17 Command 0x14: GetAccessoryAuthenticationInfo 136 3.3.18 Command 0x15: RetAccessoryAuthenticationInfo 136 3.3.19 Command 0x16: AckAccessoryAuthenticationInfo 137 3.3.20 Command 0x17: GetAccessoryAuthenticationSignature 138 3.3.21 Command 0x18: RetAccessoryAuthenticationSignature 139 3.3.22 Command 0x19: AckAccessoryAuthenticationStatus 139 3.3.23 Command 0x1A: GetiPodAuthenticationInfo 140 3.3.24 Command 0x1B: RetiPodAuthenticationInfo 140 3.3.25 Command 0x1C: AckiPodAuthenticationInfo 141 3.3.26 Command 0x1D: GetiPodAuthenticationSignature 141 3.3.27 Command 0x1E: RetiPodAuthenticationSignature 142 3.3.28 Command 0x1F: AckiPodAuthenticationStatus 142 3.3.29 Command 0x23: NotifyiPodStateChange 143 3.3.30 Command 0x24: GetiPodOptions 143 3.3.31 Command 0x25: RetiPodOptions 144 3.3.32 Command 0x27: GetAccessoryInfo 144 3.3.33 Command 0x28: RetAccessoryInfo 147 3.3.34 Command 0x29: GetiPodPreferences 151 3.3.35 Command 0x2A: RetiPodPreferences 156 3.3.36 Command 0x2B: SetiPodPreferences 157 3.3.37 Command 0x35: GetUIMode 158 3.3.38 Command 0x36: RetUIMode 158 3.3.39 Command 0x37: SetUIMode 159 3.3.40 Command 0x38: StartIDPS 160 3.3.41 Command 0x39: SetFIDTokenValues 160 3.3.42 Command 0x3A: AckFIDTokenValues 169 3.3.43 Command 0x3B: EndIDPS 173 3.3.44 Command 0x3C: IDPSStatus 174 3.3.45 Command 0x3F: OpenDataSessionForProtocol 175 3.3.46 Command 0x40: CloseDataSession 176 3.3.47 Command 0x41: AccessoryAck 176 3.3.48 Command 0x42: AccessoryDataTransfer 177 3.3.49 Command 0x43: iPodDataTransfer 178 3.3.50 Command 0x46: SetAccessoryStatusNotification 179 3.3.51 Command 0x47: RetAccessoryStatusNotification 180 3.3.52 Command 0x48: AccessoryStatusNotification 180 3.3.53 Command 0x49: SetEventNotification 183 3.3.54 Command 0x4A: iPodNotification 185 3.3.55 Command 0x4B: GetiPodOptionsForLingo 191 3.3.56 Command 0x4C: RetiPodOptionsForLingo 192 2012-09-12 | © 2012 Apple Inc. All Rights Reserved. 5
CONTENTS 3.3.57 Command 0x4D: GetEventNotification 202 3.3.58 Command 0x4E: RetEventNotification 202 3.3.59 Command 0x4F: GetSupportedEventNotification 202 3.3.60 Command 0x50: CancelCommand 203 3.3.61 Command 0x51: RetSupportedEventNotification 203 3.3.62 Command 0x54: SetAvailableCurrent 204 3.3.63 Command 0x56: SetInternalBatteryChargingState 204 3.3.64 Command 0x64: RequestApplicationLaunch 205 3.3.65 Command 0x65: GetNowPlayingApplicationBundleName 206 3.3.66 Command 0x66: RetNowPlayingApplicationBundleName 206 3.3.67 Command 0x67: GetLocalizationInfo 206 3.3.68 Command 0x68: RetLocalizationInfo 207 3.3.69 Command 0x69: RequestWiFiConnectionInfo 207 3.3.70 Command 0x6A: WiFiConnectionInfo 208 Chapter 4 4. Additional Lingoes 211 4.1 Command Timings 212 4.2 Lingo 0x02: Simple Remote Lingo 213 4.2.1 History and Applicability 213 4.2.2 Playback Engine Playlists 216 4.2.3 Using Contextual Buttons 216 4.2.4 Using Dedicated Media Buttons 218 4.2.5 Accessory Control of the iPod 5G nano Camera 218 4.2.6 USB Human Interface Device Reports 225 4.2.7 Command 0x00: ContextButtonStatus 226 4.2.8 Command 0x01: iPodAck 228 4.2.9 Command 0x03: VideoButtonStatus 228 4.2.10 Command 0x04: AudioButtonStatus 230 4.2.11 Command 0x0B: iPodOutButtonStatus 231 4.2.12 Command 0x0C: RotationInputStatus 233 4.2.13 Command 0x0D: RadioButtonStatus 235 4.2.14 Command 0x0E: CameraButtonStatus 236 4.2.15 Command 0x0F: RegisterDescriptor 237 4.2.16 Command 0x10: iPodHIDReport 239 4.2.17 Command 0x11: AccessoryHIDReport 239 4.2.18 Command 0x12: UnregisterDescriptor 240 4.2.19 Command 0x13: VoiceOverEvent 240 4.2.20 Command 0x14: GetVoiceOverParameter 243 4.2.21 Command 0x15: RetVoiceOverParameter 243 4.2.22 Command 0x16: SetVoiceOverParameter 244 4.2.23 Command 0x17: GetCurrentVoiceOverItemProperty 244 4.2.24 Command 0x18: RetCurrentVoiceOverItemProperty 245 4.2.25 Command 0x19: SetVoiceOverContext 246 4.2.26 Command 0x1A: VoiceOverParameterChanged 247 4.2.27 Command 0x81: AccessoryAck 247 6 2012-09-12 | © 2012 Apple Inc. All Rights Reserved.
CONTENTS 4.3 Lingo 0x03: Display Remote Lingo 248 4.3.1 Command History of the Display Remote lingo 250 4.3.2 Transferring Album Art 251 4.3.3 Command 0x00: iPodAck 251 4.3.4 Command 0x01: GetCurrentEQProfileIndex 252 4.3.5 Command 0x02: RetCurrentEQProfileIndex 252 4.3.6 Command 0x03: SetCurrentEQProfileIndex 253 4.3.7 Command 0x04: GetNumEQProfiles 253 4.3.8 Command 0x05: RetNumEQProfiles 254 4.3.9 Command 0x06: GetIndexedEQProfileName 254 4.3.10 Command 0x07: RetIndexedEQProfileName 254 4.3.11 Command 0x08: SetRemoteEventNotification 255 4.3.12 Command 0x09: RemoteEventNotification 256 4.3.13 Command 0x0A: GetRemoteEventStatus 263 4.3.14 Command 0x0B: RetRemoteEventStatus 264 4.3.15 Command 0x0C: GetiPodStateInfo 264 4.3.16 Command 0x0D: RetiPodStateInfo 265 4.3.17 Command 0x0E: SetiPodStateInfo 266 4.3.18 Command 0x0F: GetPlayStatus 270 4.3.19 Command 0x10: RetPlayStatus 270 4.3.20 Command 0x11: SetCurrentPlayingTrack 271 4.3.21 Command 0x12: GetIndexedPlayingTrackInfo 271 4.3.22 Command 0x13: RetIndexedPlayingTrackInfo 272 4.3.23 Command 0x14: GetNumPlayingTracks 274 4.3.24 Command 0x15: RetNumPlayingTracks 275 4.3.25 Command 0x16: GetArtworkFormats 275 4.3.26 Command 0x17: RetArtworkFormats 275 4.3.27 Command 0x18: GetTrackArtworkData 276 4.3.28 Command 0x19: RetTrackArtworkData 277 4.3.29 Command 0x1A: GetPowerBatteryState 278 4.3.30 Command 0x1B: RetPowerBatteryState 278 4.3.31 Command 0x1C: GetSoundCheckState 279 4.3.32 Command 0x1D: RetSoundCheckState 279 4.3.33 Command 0x1E: SetSoundCheckState 280 4.3.34 Command 0x1F: GetTrackArtworkTimes 280 4.3.35 Command 0x20: RetTrackArtworkTimes 281 4.3.36 Command 0x21: CreateGeniusPlaylist 281 4.3.37 Command 0x22: IsGeniusAvailableForTrack 282 4.4 Lingo 0x04: Extended Interface Lingo 283 4.5 Lingo 0x05: Accessory Power Lingo 283 4.6 Lingo 0x06: USB Host Mode Lingo 283 4.6.1 Command History of the USB Host Lingoes 284 4.6.2 Command 0x00: AccessoryAck 284 4.6.3 Command 0x04: NotifyUSBMode 284 4.6.4 Command 0x80: iPodAck 285 4.6.5 Command 0x81: GetiPodUSBMode 285 2012-09-12 | © 2012 Apple Inc. All Rights Reserved. 7
CONTENTS 4.6.6 Command 0x82: RetiPodUSBMode 286 4.6.7 Command 0x83: SetiPodUSBMode 286 4.7 Lingo 0x07: RF Tuner Lingo 287 4.7.1 RF Tuner Accessory Design 287 4.7.2 RF Tuner Power 288 4.7.3 RF Tuner Lingo Commands 288 4.7.4 Command History of the RF Tuner Lingo 290 4.7.5 Command 0x00: AccessoryAck 291 4.7.6 Command 0x01: GetTunerCaps 292 4.7.7 Command 0x02: RetTunerCaps 292 4.7.8 Command 0x03: GetTunerCtrl 294 4.7.9 Command 0x04: RetTunerCtrl 294 4.7.10 Command 0x05: SetTunerCtrl 295 4.7.11 Command 0x06: GetTunerBand 296 4.7.12 Command 0x07: RetTunerBand 297 4.7.13 Command 0x08: SetTunerBand 297 4.7.14 Command 0x09: GetTunerFreq 298 4.7.15 Command 0x0A: RetTunerFreq 298 4.7.16 Command 0x0B: SetTunerFreq 299 4.7.17 Command 0x0C: GetTunerMode 299 4.7.18 Command 0x0D: RetTunerMode 300 4.7.19 Command 0x0E: SetTunerMode 300 4.7.20 Command 0x0F: GetTunerSeekRssi 301 4.7.21 Command 0x10: RetTunerSeekRssi 302 4.7.22 Command 0x11: SetTunerSeekRssi 302 4.7.23 Command 0x12: TunerSeekStart 302 4.7.24 Command 0x13: TunerSeekDone 304 4.7.25 Command 0x14: GetTunerStatus 305 4.7.26 Command 0x15: RetTunerStatus 305 4.7.27 Command 0x16: GetStatusNotifyMask 306 4.7.28 Command 0x17: RetStatusNotifyMask 307 4.7.29 Command 0x18: SetStatusNotifyMask 307 4.7.30 Command 0x19: StatusChangeNotify 308 4.7.31 Command 0x1A: GetRdsReadyStatus 309 4.7.32 Command 0x1B: RetRdsReadyStatus 310 4.7.33 Command 0x1C: GetRdsData 311 4.7.34 Command 0x1D: RetRdsData 312 4.7.35 Command 0x1E: GetRdsNotifyMask 313 4.7.36 Command 0x1F: RetRdsNotifyMask 314 4.7.37 Command 0x20: SetRdsNotifyMask 315 4.7.38 Command 0x21: RdsReadyNotify 316 4.7.39 Command 0x25: GetHDProgramServiceCount 316 4.7.40 Command 0x26: RetHDProgramServiceCount 317 4.7.41 Command 0x27: GetHDProgramService 317 4.7.42 Command 0x28: RetHDProgramService 317 4.7.43 Command 0x29: SetHDProgramService 318 8 2012-09-12 | © 2012 Apple Inc. All Rights Reserved.
分享到:
收藏