IR Commands

Taken and modified from Dmitry.gr's writeup

CMDDIRNOTES
00g2wCompressed EEPROM write. Documented at length above. Writes 128 bytes on a 128-byte boundary. "extra" byte is top 8 bits of address. Bottom 8 bits will always be zero. Reply will be CMD_04
02w2w, g2wDirect EEPROM write. Documented at length above. Writes 128 bytes on a 128-byte boundary. "extra" byte is top 8 bits of address. Bottom 8 bits will always be zero. Reply will be CMD_04
04w2w, w2gACK for an EEPROM write (CMD_00, CMD_02, CMD_0A, CMD_80, CMD_82)
06?2wDirect internal memory write. "extra" byte is top 8 bits of address. First byte of payload is low byte of address. The rest of the payload will be written to internal memory at that address. Yes, this means RAM, MMIO, etc. Reply will be CMD_06
0A?2wDirect EEPROM write, random length. "extra" byte is top 8 bits of address. First byte of payload is low byte of address. The rest of the payload will be written to EEPROM at that address. Reply will be CMD_04
0Cw2w, g2wEEPROM read. Payload is a 16-bit start address, big-endian, followed by a one-byte length. Reply will be CMD_0E
0Ew2w, w2gEEPROM read reply. Payload is the data requested by CMD_0C
10w2wSent by the master walker in a peer-play scenario at start. Enclosed is 0x68 bytes of data - the "IDENTITY DATA". The expected reply from the peer is CMD_12
12w2wSent by the slave walker in a peer-play scenario in reply to CMD_10. Enclosed is 0x68 bytes of data - the "IDENTITY DATA". This data is explained later. The "master" will proceed to exchange needed data, and then will send CMD_14
14w2wSent by the master walker in a peer-play scenario after all the needed data has been exchanged. Enclosed is 0x34 bytes of data - the "PEER PLAY DATA", "extra" byte byte will be 1. Slave walker replies with CMD_14 as well, same format, "extra" byte byte will be 2. Master will then send CMD_16
16w2wSent by the master walker in a peer-play scenario. No data. Reply is also a CMD_16. Does the entire peer-play UI and awards gift item.
1Cw2wSent by the either walker during peer play when it's detected that it's "played" with this peer too recently. Shows the "Cannot connect to trainer again" error. No data.
20g2wRequests walker's "IDENTITY DATA". No data attached. Walker is expected to reply with CMD_22
22w2gData is "IDENTITY DATA", 0x68 bytes
24??Ping request. No operation other than reply with CMD_26.
26??Ping reply. Sent in reply to CMD_24
2Ag2w, w2gData is "UNIQUE ID DATA", used to set RTC. Erases the walker. Differs somehow from CMD_2C. Reply is CMD_2A, 0x28 bytes, "UNIQUE ID DATA" which is now all 0xFF. This command is actually used by the game to reset the walker
2C?2wData is "UNIQUE ID DATA", used to set RTC. Erases the walker. Differs somehow from CMD_2A. Reply is CMD_2C, 0x28 bytes, "UNIQUE ID DATA" whic is now all 0xFF
32?2wData is "IDENTITY DATA" that master sends to the slave. From it only RTC is used, if a flag is set. Reply from the walker will be CMD_34
34w2?Reply to CMD_32, no data
36?2wNo data, no reply. Shows "Cannot complete this connection" error
38?2wPerforms the "walk start" action (same as what CMA_5A does), but without the UI. Does not erase "special event" status, unlike CMD_5A which does. See CMD_5A for details.
40g2wSame as CMD_32. Data is "IDENTITY DATA" that master sends to the slave. From it only RTC is used, if a flag is set. Reply from the walker will be CMD_42
42w2gReply to CMD_40, no data
44w2gNo data, no reply. Show "cannot complete this connection"
4Eg2wNo data. Reply is CMD_50. Performs "walk end" action, erases pokemon state, shows "walk end" UI
50w2gReply to CMD_4E, no data
52?2wSame as CMD_32. Data is "IDENTITY DATA" that master sends to the slave. From it only RTC is used, if a flag is set. Reply from the walker will be CMD_54
54w2?Reply to CMD_52, no data
56?2wNo data, no reply. Shows "Cannot complete this connection" error
5Ag2wNo data. Reply is CMD_5A. Performs "walk start" action, including copying data to proper places, shows the UI
60?2wSame as CMD_32. Data is "IDENTITY DATA" that master sends to the slave. From it only RTC is used, if a flag is set. Reply from the walker will be CMD_62. Also reload our walker info from eeprom.
62w2?Reply to CMD_60, no data
64?2wNo data, no reply. Shows "Cannot complete this connection" error
66?2wNo data. Set the message to show at connection end to be "Completed". Reply is CMD_68
68w2?No data. Reply to CMD_66
80g2wCompressed EEPROM write. Documented at length above. Writes 128 bytes on a 128-byte boundary. "extra" byte is top 8 bits of address. Bottom 8 bits will always be 0x80. Reply will be CMD_04
82w2w, g2wDirect EEPROM write. Documented at length above. Writes 128 bytes on a 128-byte boundary. "extra" byte is top 8 bits of address. Bottom 8 bits will always be 0x80. Reply will be CMD_04
9C?2w, w2?No data. Show "Could not receive..." error. Reply is CMD_9C
9E?2w, w2?No data. Show "Could not receive..." error. Reply is CMD_9E. Sent by walker in reply to CMD_A0, CMD_A2, CMD_A4, CMD_A6, CMD_A8, CMD_AA, CMD_AC, CMD_AE
A0 A2 A4 A6 A8 AA AC AE?2w, w2?Use byte 0x5A of the most recently received "IDENTITY DATA" as event index. Check if we've participated. If so, reply with an empty CMD_9E, if not, reply with the same CMD as we received, 17 bytes. First 16 will be "EVENT BITMAP", last will be the event index we just checked for.
B8 BA BC BE?2wNo data. Award the user a stamp. In order they are: heart, spade, diamond, club. Replies are CMD_C8, CMD_CA, CMD_CC, CMD_CE respectively
C0?2w, w2?No data. Award the user a "special map" This seems to do nothing but show an icon in the UI, and show the "Special map received" message. Reply is also an empty CMD_C0
C2?2w, w2?No data. Award the user an "event pokemon". Details later. Reply is also an empty CMD_C2
C4?2w, w2?No data. Award the user an "event item". Details later. Reply is also an empty CMD_C4
C6?2w, w2?No data. Move the user to an "event route". Details later. Reply is also an empty CMD_C6
C8 CA CC CEw2?Replies to CMD_B8, CMD_BA, CMD_BC, CMD_BE respectively. No data.
D0?2wNo data. Same as CMD_C0, except also grant the user all 4 stamps
D2?2wNo data. Same as CMD_C2, except also grant the user all 4 stamps
D4?2wNo data. Same as CMD_C4, except also grant the user all 4 stamps
D6?2wNo data. Same as CMD_C6, except also grant the user all 4 stamps
D8?2wNo data. Show "Cannot complete this connection" error. No reply.
F0?2w, w2?Not yet fully understood. Data is 0x71 bytes of "ENROLL DATA" Some sort of enroll action. The only path to code that writes te EEPROM's "UNIQUE ID DATA" and "LCD INIT DATA". Reply is also a CMD_F0, with 0x28 bytes of data - a copy of the "UNIQUE ID DATA"
F4?2wImmediate disconnect. No reply.
F8w2g, w2wPart of connection initiation as explained above. No data. Sent by slave walker to master walker or game after getting CMD_FA
FAg2w, w2wPart of connection initiation as explained above. No data. Sent by game or master walker to slave walker after seeing an advertising byte 0xFC on IR
FE?2w, w2?Not yet fully understood. Writes the 8 data bytes to EEPROM at offset 8. Never seen in the wild. Reply is an empty CMD_FE