2024年4月15日发(作者:鲜于泰和)
Ipod 通讯协议
1.通讯格式说明:
field
Header
Length
Mode
Command
Parameter
Checksum
size value
2
1
1
2
0..n
1
0xff 0x55
Size of mode+command+parameter
the mode the command is referring to
the two byte command
optional parameter, depending on the command
0x100 - ( (sum of all length/mode/command/parameter bytes) & 0xFF)
2.具体通讯命令说明:
命令
0x
ff 0x55 0x03 0x00 0x01 0x04 0xf8
通讯命令 说明
说明
打开ipod串口连接,并进入高级控制模式
? 0xFF 0x55+length+0x04 0x00 0x00+Result(1) think that the result 0x04 means that the command wasn´t
+Command(2)+
校验位
(1)
返回: 0xFF 0x55+length+0x04 0x00 0x01+Result(1)
+Command(2)+
校验位
(1)
0xFF 0x55 0x03 0x04 0x00 0x02 0xf7
understood
返回信息result: 0.表示成功 2.表示失败 4表示超出范围
Command:表示之前发送的指令的command
发送简单的ping指令,返回:FF 55 0B 04 00 03 FF FF FF
FF 00 00 00 00 F2,表示连接成功
返回: 0xFF 0x55 0x0B 0x04 0x00 0x03 0xFF 0xFF 表示成功连接
0xFF 0xFF 0x00 0x00 0x00 0x00 0xF2,
? 0xff 0x55 0x03 0x04 0x00 0x09 0xf0
? returns flag set with 0x00 0x0b, don´t know, what this
means (perhaps an indicator for track-change - if you set
this flag to 0x01 it turns to 0x00 again after changing the
track)
? 返回: 0xFF 0x55 0x04 0x04 0x00 0x0A +byte(1)
+ 校验位(1)
? 0xFF 0x55 0x04 0x04 0x00 0x0B +byte(1)
+ 校验位(1)
Byte=0x00 or 0x01
parameter 0x00 & 0x01 result in a success-answere
(copare 0x00 0x01), don´t know what happens - seems to
be a flag which can be read with 0x00 0x09
? 0xFF 0x55 0x04 0x04 0x00 0x0C +byte(7)
+ 校验位(1)
??? results in a answer 0x0d
? 0xFF 0x55 0x04 0x04 0x00 0x0D + byte(7)or
byte(1)+ 校验位(1)
tried some parameters - result seems to dependent on
current playlist
parameters 0x00 0x00 0x00 0x00 0x00 0x00 0x00 give (on
my Ipod) 11 bytes(0x00 0x00 0x00 0x00 0x00 0x00 0x02
0xf0 0xdb 0x00 0x00 in main-Playlist - *not* the
playlist-number and *not* the count of tracks in this
playlist)
This command can also inform the accessory when there is
a track change (one song ends and another begins). So it is
a "subscription" - some previous query caused the ipod to
send this every time the track changes. Probably the
parameter bytes are a kind of track ID, maybe based on
some filesystem attribute, such as actual position on the
hard disk.
0xFF 0x55 0x03 0x04 0x00 0x12 0xe7 获取ipod型号指令
返回: 0xFF 0x55 0x05 0x04 0x00 0x13 0x01 0x0D 0xD6 返回ipod型号
0xFF 0x55 0x03 0x04 0x00 0x14 0xe5
返回: 0xFF 0x55 + length + 0x04 0x00 0x15
+ipod name+
校验位
(1)
0xFF 0x55 0x03 0x04 0x00 0x16 0xe3 发送指令,使控制命令0x00 0x17有效
获取ipod name
返回的ipod name数据
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x16 表示已经激活了0x00 0x17的控制命令
0xDF
0xFF 0x55 0x08 0x04 0x00 0x17 + type(1) 切换到指定的type(1)(0x01表示进入 播放列表,0x02表
+number(4)+
校验位
(1) 示进入 表演者,0x03 表示进入 专辑,0x04表示进入 风格,
0x05 表示进入 歌曲,0x06 表示进入 作曲家)
Number(4)(进入type的第几个项,从零开始)
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x17 返回0x17的命令是否成功切换
0xDE
0xFF 0x55 0x04 0x04 0x00 0x18 +type(1)+
校验
位
(1)
获取ipod type(1)(0x01表示 播放列表,0x02表示 表演
者,0x03表示 专辑,0x04表示 风格, 0x05表示 歌曲,
0x06表示 作曲家)的总数
返回: 0xFF 0x55 0x07 0x04 0x00 0x19 +number(4)+
校验位
(1)
获取各种类型返回的总数number(4)
0xff 0x55 +length +0x04 +0x00 0x1a
+type(1)
+number(4)(从0开始索引)
+Number(4)(从1开始索引)+校验位(1)
获取相应type(1)和第一个number(4)表示要获取的类型
的开始位置,第二个number(4)表示要返回的类型的数量,
注:当type=0x01时第一个number=0时,返回的第一项是
ipod name。
返回: 0xff 0x55 +length +0x04 +0x00 0x1B +
number(4) + string(N)+校验位(1)
0xFF 0x55 0x03 0x04 0x00 0x1c 0xdd
返回多项相应的项目名称
获取现在的播放的歌曲总时间和已播放的时间还有播放状态
返回: 0xFF 0x55 0x0C 0x04 0x00 0x1D +length(4)+ 获取正在播放的曲目总时间和当前时间(以毫秒为单位),
2024年4月15日发(作者:鲜于泰和)
Ipod 通讯协议
1.通讯格式说明:
field
Header
Length
Mode
Command
Parameter
Checksum
size value
2
1
1
2
0..n
1
0xff 0x55
Size of mode+command+parameter
the mode the command is referring to
the two byte command
optional parameter, depending on the command
0x100 - ( (sum of all length/mode/command/parameter bytes) & 0xFF)
2.具体通讯命令说明:
命令
0x
ff 0x55 0x03 0x00 0x01 0x04 0xf8
通讯命令 说明
说明
打开ipod串口连接,并进入高级控制模式
? 0xFF 0x55+length+0x04 0x00 0x00+Result(1) think that the result 0x04 means that the command wasn´t
+Command(2)+
校验位
(1)
返回: 0xFF 0x55+length+0x04 0x00 0x01+Result(1)
+Command(2)+
校验位
(1)
0xFF 0x55 0x03 0x04 0x00 0x02 0xf7
understood
返回信息result: 0.表示成功 2.表示失败 4表示超出范围
Command:表示之前发送的指令的command
发送简单的ping指令,返回:FF 55 0B 04 00 03 FF FF FF
FF 00 00 00 00 F2,表示连接成功
返回: 0xFF 0x55 0x0B 0x04 0x00 0x03 0xFF 0xFF 表示成功连接
0xFF 0xFF 0x00 0x00 0x00 0x00 0xF2,
? 0xff 0x55 0x03 0x04 0x00 0x09 0xf0
? returns flag set with 0x00 0x0b, don´t know, what this
means (perhaps an indicator for track-change - if you set
this flag to 0x01 it turns to 0x00 again after changing the
track)
? 返回: 0xFF 0x55 0x04 0x04 0x00 0x0A +byte(1)
+ 校验位(1)
? 0xFF 0x55 0x04 0x04 0x00 0x0B +byte(1)
+ 校验位(1)
Byte=0x00 or 0x01
parameter 0x00 & 0x01 result in a success-answere
(copare 0x00 0x01), don´t know what happens - seems to
be a flag which can be read with 0x00 0x09
? 0xFF 0x55 0x04 0x04 0x00 0x0C +byte(7)
+ 校验位(1)
??? results in a answer 0x0d
? 0xFF 0x55 0x04 0x04 0x00 0x0D + byte(7)or
byte(1)+ 校验位(1)
tried some parameters - result seems to dependent on
current playlist
parameters 0x00 0x00 0x00 0x00 0x00 0x00 0x00 give (on
my Ipod) 11 bytes(0x00 0x00 0x00 0x00 0x00 0x00 0x02
0xf0 0xdb 0x00 0x00 in main-Playlist - *not* the
playlist-number and *not* the count of tracks in this
playlist)
This command can also inform the accessory when there is
a track change (one song ends and another begins). So it is
a "subscription" - some previous query caused the ipod to
send this every time the track changes. Probably the
parameter bytes are a kind of track ID, maybe based on
some filesystem attribute, such as actual position on the
hard disk.
0xFF 0x55 0x03 0x04 0x00 0x12 0xe7 获取ipod型号指令
返回: 0xFF 0x55 0x05 0x04 0x00 0x13 0x01 0x0D 0xD6 返回ipod型号
0xFF 0x55 0x03 0x04 0x00 0x14 0xe5
返回: 0xFF 0x55 + length + 0x04 0x00 0x15
+ipod name+
校验位
(1)
0xFF 0x55 0x03 0x04 0x00 0x16 0xe3 发送指令,使控制命令0x00 0x17有效
获取ipod name
返回的ipod name数据
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x16 表示已经激活了0x00 0x17的控制命令
0xDF
0xFF 0x55 0x08 0x04 0x00 0x17 + type(1) 切换到指定的type(1)(0x01表示进入 播放列表,0x02表
+number(4)+
校验位
(1) 示进入 表演者,0x03 表示进入 专辑,0x04表示进入 风格,
0x05 表示进入 歌曲,0x06 表示进入 作曲家)
Number(4)(进入type的第几个项,从零开始)
返回: 0xFF 0x55 0x06 0x04 0x00 0x01 0x00 0x00 0x17 返回0x17的命令是否成功切换
0xDE
0xFF 0x55 0x04 0x04 0x00 0x18 +type(1)+
校验
位
(1)
获取ipod type(1)(0x01表示 播放列表,0x02表示 表演
者,0x03表示 专辑,0x04表示 风格, 0x05表示 歌曲,
0x06表示 作曲家)的总数
返回: 0xFF 0x55 0x07 0x04 0x00 0x19 +number(4)+
校验位
(1)
获取各种类型返回的总数number(4)
0xff 0x55 +length +0x04 +0x00 0x1a
+type(1)
+number(4)(从0开始索引)
+Number(4)(从1开始索引)+校验位(1)
获取相应type(1)和第一个number(4)表示要获取的类型
的开始位置,第二个number(4)表示要返回的类型的数量,
注:当type=0x01时第一个number=0时,返回的第一项是
ipod name。
返回: 0xff 0x55 +length +0x04 +0x00 0x1B +
number(4) + string(N)+校验位(1)
0xFF 0x55 0x03 0x04 0x00 0x1c 0xdd
返回多项相应的项目名称
获取现在的播放的歌曲总时间和已播放的时间还有播放状态
返回: 0xFF 0x55 0x0C 0x04 0x00 0x1D +length(4)+ 获取正在播放的曲目总时间和当前时间(以毫秒为单位),