so far they all worked, i have:
-A Car Kit made by Dension
-A Kensington FM-RDS Transmitter
-A Logitech Boom-Boom Box
The iPhone always complains but works :-)
If the Acc. tries to display something on the ipod screen ( like the FM Transmiter normally shows the chosen Frequency ) the iPhone simply ignores.
So i set up the FM Transmitter and the Car Kit with my wifes ipod and now use it on the iPhone...
You're welcome :-)
Hi folks, my serial controller is not quite together yet. So tomorrow or Sunday I will make a more basic PC to Iphone serial demo and explain how it works so as to not keep people waiting. I'd love to see what cool things people do with serial port access anyway, so I want to release the details soon :)
WAOUW cant wait to have a gamepad to play gba and incoming psx emu :)
Originally Posted by TheRain
Waiting for your demo.
If you want, I can test it for iPod Touch (i should be the same as with the iPhone).
Don't hesitate to post details.
++ this is super exciting. Is there a project page for this somewhere so we can keep track and donate?
Originally Posted by doudoo
Oh yah, sorry for the confusion- I made a separate thread here http://www.hackint0sh.org/forum/showthread.php?t=18904
I am trying to use iPhone serial port.
I saw that my iPhone gets input from my computer through pin 13 when I opened /dev/tty.iap in minicom.
I was trying to access /dev/tty.iap in my app but i couldn't open it. My app could open /dev/tty/s001 and /dev/ttys002 but how do I get the input with this serial port? do I have to put some resistor in pin 21?
I'd really appreciate your advice.
are you using the open toolchain or the apple sdk? i am using the serial port in my project and i am using the sdk for my application. the only way for me to open the serial port for RW operation is to jailbreak the phone and put my app manually (using ssh) into /Applications. if i leave my app within the sandbox, i cannot open the serial port for RW.
my serial open routine looks like this:
#define SERIAL_PORT "/dev/tty.iap"
static struct termios gOriginalTTYAttrs;
int fileDescriptor = -1;
struct termios options;
// Open the serial port read/write, with no controlling terminal, and don't wait for a connection.
// The O_NONBLOCK flag also causes subsequent I/O on the device to be non-blocking.
// See open(2) ("man 2 open") for details.
fileDescriptor = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fileDescriptor == -1)
printf("Error opening serial port %s - %s(%d).\n", SERIAL_PORT, strerror(errno), errno);
// Note that open() follows POSIX semantics: multiple open() calls to the same file will succeed
// unless the TIOCEXCL ioctl is issued. This will prevent additional opens except by root-owned
// See tty(4) ("man 4 tty") and ioctl(2) ("man 2 ioctl") for details.
if (ioctl(fileDescriptor, TIOCEXCL) == -1)
printf("Error setting TIOCEXCL on %s - %s(%d).\n", SERIAL_PORT, strerror(errno), errno);
// Now that the device is open, clear the O_NONBLOCK flag so subsequent I/O will block.
// See fcntl(2) ("man 2 fcntl") for details.
if (fcntl(fileDescriptor, F_SETFL, 0) == -1)
printf("Error clearing O_NONBLOCK %s - %s(%d).\n", SERIAL_PORT, strerror(errno), errno);
// Get the current options and save them so we can restore the default settings later.
if (tcgetattr(fileDescriptor, &gOriginalTTYAttrs) == -1)
printf("Error getting tty attributes %s - %s(%d).\n", SERIAL_PORT, strerror(errno), errno);
// The serial port attributes such as timeouts and baud rate are set by modifying the termios
// structure and then calling tcsetattr() to cause the changes to take effect. Note that the
// changes will not become effective without the tcsetattr() call.
// See tcsetattr(4) ("man 4 tcsetattr") for details.
options = gOriginalTTYAttrs;
// Print the current input and output baud rates.
// See tcsetattr(4) ("man 4 tcsetattr") for details.
//printf("Current input baud rate is %d\n", (int) cfgetispeed(&options));
//printf("Current output baud rate is %d\n", (int) cfgetospeed(&options));
// Set raw input (non-canonical) mode, with reads blocking until either a single character
// has been received or a one second timeout expires.
// See tcsetattr(4) ("man 4 tcsetattr") and termios(4) ("man 4 termios") for details.
options.c_cc[VMIN] = 1;
options.c_cc[VTIME] = 10;
// The baud rate, word length, and handshake options can be set as follows:
cfsetspeed(&options, B57600); //NOTE: iphone doesn't like rates above 57600
options.c_cflag |= CS8; // RTS flow control of input
printf("baud rate @ %d\n", (int) cfgetispeed(&options));
// Cause the new options to take effect immediately.
if (tcsetattr(fileDescriptor, TCSANOW, &options) == -1)
printf("Error setting tty attributes %s - %s(%d).\n", SERIAL_PORT, strerror(errno), errno);
// Failure SERIAL_PORT
if (fileDescriptor != -1)
I would like to learn if this can be accomplished given these variables
- an iPod Touch 8GB MC model
- 3.1.x OS (or 2.2.x OS, but I don't think the 8GB MC can run 2.2.x)
- jailbroken plus any other necessary changes (iapd hacking?)
- resistor of X value attached on dock connector
Having googled a great many threads on this topic, I haven't seen one that came out conclusively saying "Yes you can do it on iPod touch 2009 8GB with OS 3.1.2".
A case of your favorite fizzy beverage to anyone who can help me get this working. I'd prefer not to have to write a soft-modem for the audio lines!
Originally Posted by iphonejoe