Media remote
Standard Media Remoteā¢The standard remote (as opposed to the Universal Media Remote) was only released in limited quantities with Xbox 360 premium packages at launch.
- The difference between the Universal Media Remote and the Standard Remote appears to just be the button additions.
- The remote uses the IR port located on the front of the Xbox 360.
- Some Windows Media Center Edition computers recognize this remote as a normal Media Center remote.
Confirmed Facts
- All Windows Media Center remotes are recognized by the Xbox 360.
Linux Facts
Big remote Big remote
- IRCODE , Function
- {'26','Button Y'},
- {'25','Button B'},
- {'24','DVD menu'},
- {'23','BACK'},
- {'22','OK'},
- {'20','Button left'},
- {'21','Button right'},
- {'19','Stop button'},
- {'18','Pause button'},
- {'17','Rec button'},
- {'16','Play button'},
- {'15','Fast rewind \<\<'},
- {'14','fast foward >>'},
- {'11','Volume down'},
- {'10','Volume up'},
- {'09','Button 9 on ke*ypad part'},
- {'08','Button 8 on ke*ypad part'},
- {'07','Button 7 on ke*ypad part'},
- {'06','Button 6 on ke*ypad part'},
- {'05','Button 5 on ke*ypad part'},
- {'04','Button 4 on keypad part'},
- {'03','Button 3 on keypad part'},
- {'02','Button 2 on keypad part'},
- {'01','Button 1 on keypad part'},
- {'00','Button 0 on keypad part'},
- {'1a','Go to ending >|'},
- {'1b','Go to beginning |\<'},
- {'1c','Unknown'},
- {'1d','100 on remote'},
- {'1e','Button up'},
- {'1f','Button down'},
- {'0a','Clear'},
- {'0b','ENTER'},
- {'0c','Unknown'},
- {'0d','Windows Media Start'},
- {'0e','Mute'},
- {'0f','Info'},
- {'4f','Display'},
- {'51','Title'},
- {'64','Big X button on top, use as alternative 'on'?'},
- {'68','Button X'},
- {'66','Button A '},
- {'6c','Channel up'},
- {'6d','Channel down'};
the small remote 'image insert here'
- IRCODE , Function
- {'64','guide'},
- {'19','stop'},
- {'18','pause'},
- {'16','play'},
- {'15','rewind'},
- {'14','fast forward'},
- {'1A','chapter next'},
- {'1B','chapter prev'},
- {'4F','display'},
- {'51','title'},
- {'24','dvd menu'},
- {'23','back'},
- {'0F','info'},
- {'1E','up'},
- {'1F','down'},
- {'20','left'},
- {'21','right'},
- {'22','ok'},
- {'12','A'},
- {'25','B'},
- {'13','X'},
- {'26','Y'},
- {'0D','windows'},
- {'17','record'};
Proof of concept code by Icekiller
/*
* Example code of how to use the build in IR of the xbox 360
* Code rewritten based on tmbinc's smc.c
* free to use under GPL
*
* 20 januari 2008 by Icekiller
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <getopt.h>
#include <string.h>
#include <time.h>
#define SMC_FILENAME "/dev/smc"
int smc_fd;
void wait(int seconds)
{
clock_t endwait;
endwait = clock() + seconds * CLOCKS_PER_SEC;
while (clock() < endwait) {
}
}
int main(int argc, char **argv)
{
int first = 1;
/* try open SMC. if this doesn't work, bail out. */
smc_fd = open(SMC_FILENAME, O_RDWR);
if (smc_fd < 0) {
perror(SMC_FILENAME);
return 1;
}
while (1) {
unsigned char msg[16];
int option_index = 0, c;
msg[0] = 0x16;
/* prepare message */
memset(msg, 0, 16);
if (c != 'w') {
msg[0] = 0x16;
int i;
if (write(smc_fd, msg, 16) != 16) {
perror("write");
break;
}
}
if ((c == 'w') || (msg[0] < 0x80)) {
int wait_for = msg[0];
while (1) {
msg[0] = 0x16;
if (read(smc_fd, msg, 16) != 16)
perror("read");
int valueread;
valueread = msg[3];
if (msg[0] != 0x16)
switch (valueread) {
case 0x26:
printf("Button Y");
break;
case 0x25:
printf("Button B");
break;
case 0x24:
printf("DVD menu");
break;
case 0x23:
printf("Back");
break;
case 0x22:
printf("OK");
break;
case 0x21:
printf("Button left");
break;
case 0x20:
printf("Button right");
break;
case 0x19:
printf("Stop button");
break;
case 0x18:
printf("Pause button");
break;
case 0x17:
printf("Rec button");
break;
case 0x16:
printf(">");
break;
case 0x15:
printf("<<");
break;
case 0x14:
printf(">>");
break;
case 0x13:
printf("Button X");
break;
case 0x12:
printf("Button A");
break;
case 0x11:
printf("Volume down");
break;
case 0x10:
printf("Volume up");
break;
case 0x09:
printf("Button 9");
break;
case 0x08:
printf("Button 8");
break;
case 0x07:
printf("Button 7");
break;
case 0x06:
printf("Button 6");
break;
case 0x05:
printf("Button 5");
break;
case 0x04:
printf("Button 4");
break;
case 0x03:
printf("Button 3");
break;
case 0x02:
printf("Button 2");
break;
case 0x01:
printf("Button 1");
break;
case 0x00:
printf("Button 0");
break;
case 0x1a:
printf(">|");
break;
case 0x1b:
printf("<");
break;
case 0x1c:
printf("Unknown");
break;
case 0x1d:
printf("Unknown");
break;
case 0x1e:
printf("Button up");
break;
case 0x1f:
printf("Button down");
break;
case 0x0a:
printf("Clear");
break;
case 0x0b:
printf("ENTER");
break;
case 0x0c:
printf("Unknown");
break;
case 0x0d:
printf("WMS");
break;
case 0x0e:
printf("Mute");
break;
case 0x0f:
printf("Info");
break;
case 0x4f:
printf("Display");
break;
case 0x51:
printf("Title");
break;
case 0x64:
printf("Guide");
break;
case 0x68:
printf("Button X");
break;
case 0x66:
printf("Button A");
break;
}
printf("\n", valueread);
if (msg[0] == wait_for)
break;
}
}
wait(1);
}
}
The remote control works as a lowbase of the xbox360, so the power on and off still work in Linux, also you can get all the IR codes into linux. So 'if' a Mediacenter is ever ported to Xbox 360 Linux, you could use the official remote. (IR codes and info retrieved by Icekiller, with SMC.C from tmbinc, small remote by kwkward)