Update (11/11/12): Based on more accurate information on the protocol codes, I’ve update the information in this page
I’ve been using the Apple Aluminum Remote for my Arduino based HiFi projects. In my opinion, this is the perfect remote control for such projects because of its simplicity and good design, in addition to be reasonably priced at about US$20.
- Remote codes description [link]
- NEC-based remote protocol [link]
- Control for Arduino/Buffalo II DAC [link]
It is from Apple. Here are the things I like the most:
- Aluminum Unibody construction: feels solid
- Textured finish: good grip
- Perfect dimensions and weight: feels good in your hands
- Intuitive key layout: instant recognition by feel/ touch alone
- One finger operation: all keys within reach of, and operated by the thumb and without having to move the position of the remote in your hand
- Double-bevel design: tap down one side, the other raises to allow easy grab
The more I use the remote, the more I appreciate its design an simplicity. There is never a need to go hunting for a specific key. You know exactly where the keys are. In comparison, the typical remote controls have keys in seemingly random order and no two remotes have the same layout. Most often I have to read the labels in order to figure out the keys even after using the remote for a long while.
iSupply had this to say about the remote
“The Apple TV’s remote control represents more incredible mechanical engineering from Apple,” Rassweiler said. “The remote appears to machined from a solid piece of aluminum. Because of this, the electronics of the device must be slid in through small holes on the side, similar to putting a ship in a bottle. It’s a clever and a detail-oriented piece of design that makes the remote very pricey and very unique to Apple.”
There is a more recent teardown review here [link]
There are currently two models of the Aluminum remote: they are exactly the same except one has a raised circular touch key as you can see in the photo below. I am not sure which one is the “updated” version, but I would guess, it is the one with the raised doughnut-shaped key.
There is also the old plastic model that shares the same protocol.
CODE & PROTOCOL
Some history on the development of the code:
At first, I assumed that different models had different code. And this is what I said:
The code I’ve developed here assumes the codes for the retail model. It is easy to modify the code to work with the codes of the bundled model or even to accept both sets of codes. I have documented the codes for both models in the remote code description post [link] and are also summarized here.
Reading the full 8-bit value from the codes from different remotes, I obtained the following table:
|Key||Retail AL Remote||Bundled AL Remote||Bundled White Remote|
|Up||EE 87 0B 59||EE 87 0A 68||EE 87 0A 15|
|Down||EE 87 0D 59||EE 87 0C 68||EE 87 0C 15|
|Left||EE 87 08 59||EE 87 09 68||EE 87 09 15|
|Right||EE 87 07 59||EE 87 06 68||EE 87 06 15|
|Center||EE 87 5D 59 followed by
EE 87 04 59
|EE 87 5C 68 followed by
EE 87 05 68
|EE 87 05 15|
|Menu||EE 87 02 59||EE 87 03 68||EE 87 03 15|
|Play||EE 87 5E 59 followed by
EE 87 04 59
|EE 87 5F 68 followed by
EE 87 05 68
AL remote came with the Apple TV2 and the white plastic remote came with an iMac
Later, a reader alerted me that all remotes emit the same command codes. If you look at the command byte and discard the last bit (least significant bit), then the command codes in 7 bit are all the same for all the remotes. The last bit,t he parity, is na XOR sum of the button and ID bits. See the table below. The new hex values without the last bit are in parenthesis. Notice that they are the same for all the remotes I have tested.
|Key||Command Byte (Aluminum Remote 1)||Command Byte (Aluminum Remote 2)||Command Byte (Plastic Remote)|
|Center||01011101 followed by
00000100 (0x2E) -
|01011100 followed by
00000101 (0x2E) – (0×02)
|Play||01011110 followed by
00000100 (0x2F) – (0×02)
|01011111 followed by
00000101 (0x2F) – (0×02)
As of 11/11/12, the code has been updated to only interpret 7 bits for the command code. This way, there is no need to make any modifications and the code is compatible with all versions of the Apple remote.
8, 7 or 6 BITS?
The reader that alerted me that the command code is 7-bit, also said that it might be 6-bit. If we compare the values for 8-bit, 7-bit and 6-bit we can figure the following:
- 8-bit: Remotes will have different command code values
- 7-bit: Remotes will have the same command code values
- 6-bit: Remotes will not be able to distinguish between some buttons
Parity A means last bit is one value, whereas parity B means the last bit has the other value. With 7 bit and 6 bit, there is no parity bit to evaluate.
Clearly the correct interpretation of the command code is 7-bit