1月
01
2009
0

iPod Touch 2.2 (5G77) も嘘つき?

あけましておめでとうございます!!

こんなテキトーなメモにも関わらず毎日チェックしてくれている人がいらっしゃるようで,ありがとうございます
メモしておきたいネタはいろいろあるんですが書く時間がなかなか取れないのが悩みです・・・
今年は更新頻度を上げられるよう努力します

実家のネットワークにiPod Touchをつなごうとしたんですが,新年一発目から見事にだまされました

以前iPod Touch 2.0 (5A347) は嘘つきという記事を書きましたが 2.2 (5G77) も嘘つきのようです

2.0 (5A347) では設定メニューとifconfigで表示されるMACアドレスが違うという話でしたが,2.1 (5F137) で修正されていました
ところが・・・なぜか2.2 (5G77) で再発しています

ボカシをいれてますが,偽のアドレスは前回と同じものです

最近はWEPやWPA-PSK(WPA2-PSKも同様)がスグに解析されてしまうので,パーソナルユースではMACアドレスフィルタリングなどを併用するのが必須ですが,JailBreakしないと正しいMACアドレスが分からないのは問題ですね

Written by h2 in: ガジェット | タグ:
12月
20
2008
0

不明なエラーが発生しました(1600)

PwnageToolで作成したカスタムイメージを使って復元しようとすると,時々発生する「不明なエラー1600」

自分もiPhone OS 2.1, 2.2の両方で発生

~/Library/iTunes/Device Support内のファイルを削除すればよいという情報もあるが,自分の場合それではうまくいかなかった

PwnageToolの指示を無視してDFUモードではなく,普通のリカバリモードで復元するとうまくいった

他の環境でもうまくいくのかは不明

情報求ム

Written by h2 in: ガジェット | タグ:
11月
12
2008
2

iPhone/iPod Touch Serial Communication How-To

iPhone and iPod Touch has an UART interface for serial communication, and the device file of serial port on iPhone/iPod Touch is /dev/tty.iap.
Since iPhone OS is based on Mac OS X, 4.4 BSD extensions are available.
You should note that index numbers of c_cc array declared in termios.h doesn’t much termios(4) explanations in 4th Berkeley Distribution man page on Leopard.

Collin Meyer wrote a good tutorial “iPhone/iPod Touch Serial Port Tutorial” about non-canonical serial communication on iPhone. 
His code is almost all right, but I can’t agree in some points:

Accessing via UART interface may damage your iPhone/iPod Touch, so try at your own risk.

Basic termios settings for non-canonical mode may be as follows:

cfmakeraw(struct termios*);
c_iflag = 0;
c_oflag = 0;
c_cflag |= (CREAD|HUPCL);
c_cflag &= ~CSTOPB;
c_cc[VMIN] = ???>1; (cf. http://www.sbin.org/doc/unix-faq/programmer/faq_4.html#SEC60)
c_cc[VTIME] = ???;
cfsetspeed(struct terios*, speed_t);

The following is a simple chat program with non-canonical mode communication.

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

int main (int argc, const char * argv[]) {
  struct termios org_termios_s;
  struct termios my_termios_s;
  struct termios org_termios_c;
  struct termios my_termios_c;
  int fd = -1;
  char buf_r[128], buf_s[128];
  int i, j;

  // Open serial port
  if((fd = open("/dev/tty.iap", O_RDWR | O_NOCTTY | O_NONBLOCK)) == -1) {
    perror("open");
    exit(EXIT_FAILURE);
  }
  if(ioctl(fd, TIOCEXCL) == -1) {
    perror("TIOCEXCL");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(fcntl(fd, F_SETFL, 0) == -1) {
    perror("clear O_NONBLOCK");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Get original termios
  if(tcgetattr(fd, &org_termios_s) == -1) {
    perror("get serial original termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  if(tcgetattr(fileno(stdin), &org_termios_c) == -1) {
    perror("get console original termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Make my termios
  my_termios_s = org_termios_s;
  cfmakeraw(&my_termios_s);
  my_termios_s.c_iflag = 0;
  my_termios_s.c_oflag = 0;
  my_termios_s.c_cflag |= (CREAD|HUPCL);
  my_termios_s.c_cflag &= ~CSTOPB;
  my_termios_s.c_cc[VMIN] = 0; //can't detect modem hungups (cf. http://www.sbin.org/doc/unix-faq/programmer/faq_4.html#SEC60)
  my_termios_s.c_cc[VTIME] = 0;
  cfsetspeed(&my_termios_s, B19200);

  my_termios_c = org_termios_c;
  cfmakeraw(&my_termios_c);
  my_termios_c.c_iflag = 0;
  my_termios_c.c_oflag = 0;
  my_termios_c.c_cflag |= (CREAD|HUPCL);
  my_termios_c.c_cflag &= ~CSTOPB;
  my_termios_c.c_cc[VMIN] = 0;
  my_termios_c.c_cc[VTIME] = 0;

  // Change terminal settings
  if(tcsetattr(fd, TCSANOW, &my_termios_s) == -1) {
    perror("set my serial termios");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(tcsetattr(fileno(stdin), TCSANOW, &my_termios_c) == -1) {
    perror("set my console termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Main loop
  while(1) {
    j=read(fd, buf_r, 128);
    if(j > 0) {
      for(i=0; i<j; i++) {
        write(fileno(stdout), &buf_r[i], 1); //unrecommended use of write
      }
    }
    j=read(fileno(stdin), buf_s, 128);
    if (j > 0) {
      if(buf_s[0] == 'Q') {
        break;
      }
      for(i=0; i<j; i++) {
        write(fd, &buf_s[i], 1); //unrecommended use of write
      }
    }
  }

  // Revert orginal terminal settings
  if(tcsetattr(fd, TCSANOW, &org_termios_s) == -1) {
    perror("revert serial terminal settings");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(tcsetattr(fileno(stdin), TCSANOW, &org_termios_c) == -1) {
    perror("revert console terminal settings");
    close(fd);
    exit(EXIT_FAILURE);
  }

  printf("n"); // just cleanup
  close(fd);
  return 0;
}

Enjoy!

Written by h2 in: ガジェット | タグ:
10月
29
2008
1

iPod Touch 2.0 (5A347) は嘘つき

パケットキャプチャしてて気づきました

なんと,設定メニューとifconfigで表示されるMACアドレスが違う!!

なんでパケットが拾えんのか大分悩んだのに・・・

証拠画像はこの通り

 

NICのメーカーまで違うw 
ちなみに正しいのはifconfigの表示

これは製造メーカーを隠すための偽装なのかバグなのか・・・
2.1 (5F137) では同じアドレスが表示されてます

Written by h2 in: ガジェット | タグ:
10月
10
2008
0

USBシリアル変換モジュール AE-UM232R

iPhone/iPod TouchやLa Foneraとのシリアル通信用にTTLレベルのシリアルとUSBの変換ジュールを買ってみた
秋月AE-UM232Rは,FTDIのFT232RLを使用した組み立て済みモジュールでたった950円

定番なだけあって,Windowsはもちろん,Mac OS, Linux, Windows CEまでサポートされてる

これまで,マイコンなどをPCにつなぐには
 マイコン -> MAX232系 -> RS-232C- USB変換 -> PC
とかなり接続が面倒やったけど
 マイコン -> AE-UM232R -> PC
となるのでムダな変換もなくなってシンプル(^_^)

早速MacBookにドライバを入れてつないでみた

ドライバのインストールはFTDIのサイトからディスクイメージを落としてきて,インストーラを起動するだけ
インストール終了後は再起動を要求される

再起動後,モジュールをつないでUSB Proberを実行するとバッチリ認識!!
AE-UM232R   USB Prober

Written by h2 in: 工作 | タグ: , , ,
10月
10
2008
0

libid3tag on iPhone / iPod Touch

iPod Touch実機上でlibid3tagをビルドしていて,見事にハマりました

ビルド自体はちょっと細工して何とか終了して,/usr/lib 以下に配置!!

サンプルプログラムを書いてみたところ,Abort trapで落ちてしまう

場所は,frame.c line 173

でも・・・

mp3ファイル変えたら普通に動いた(^_^)v

原因はちゃんと調べてないので推測やけど,たまたまタグがおかしいファイルを使ってたみたい

libid3tagの使い方は,このページを参考にしました

後から気づいたんやけど,Cydiaにバイナリがありました (>_<)

Cydiaってあまり開発系のパッケージがないので期待してなかったんやけど,チェックしとけばよかった

Written by h2 in: ガジェット | タグ:
10月
05
2008
0

termios構造体メンバc_cc配列の要素番号が違う

iPhone/iPod Touch用のプログラムを書いていてハマったこと

タイトルのまんまやけど,termios構造体メンバc_cc配列の要素番号が,termios(4) と termios.h で一致しなくてハマった・・・

マクロを使えば意識せずにすむんやろうけど,ダンプしてると変更が反映されてなくて悩んだ

manのtermiosページは「4th Berkeley Distribution  April 19, 1994」となってて古いのは分かるけど,せめてセクション4はちゃんと更新してほしい→Apple

Written by h2 in: ガジェット | タグ: , ,
10月
02
2008
0

AppleがNDAを一部放棄

これまでiPhone SDKを用いてiPhone/iPod Touch向けソフトウェアを開発するには,Appleとの秘密保持契約(NDA)を結ぶ必要があったわけですが,iPhone Developer Programによると,リリース後のソフトウェアに関してAppleはNDAを放棄するようです

AppleはNDAについて技術保護のために必要だったとしていますが,開発者間で情報共有ができず開発者人口が増えないだけだと思います

1週間ほどで新しいアグリーメントが公開されるとのことで楽しみです
どうせならSDKアグリーメントの3.3にある,作ってはいけないアプリも緩和してほしい
特にアプリからローカルのiTunesフォルダにアクセスできないのは何とかならんのかなぁ
2.xのTap Tapでは,自分の好きな曲でTap Tapできなくなってしまった・・・

Written by h2 in: ひとりごと | タグ:
10月
01
2008
0

VeencyとMocha VNCで無限VNCループ?

iPhone/iPod Touch用のVNCサーバのVeencyとVNCクライアントのMocha VNC Lite
を利用しておバカなことをやってみた

まず,使用したツール

Cydia VeencyはCydiaのNetworking -> Veencyを選択してインストールするだけでOK

Mocha VNC Lite Mocha VNC Liteは,App Store経由で無料で手に入る

Vine Server MacBook側のVNCサーバには定番のVine Server for OS Xを利用した

Chicken of the VNC Vine Server for OS Xには,VNCクライアントのVine Viewerが入っている
キーを申請すれば試用することも可能だが,面倒なので定番のChicken of the VNCを使った


まず,MacBookからiPhone/iPod Touchに接続してみる

MacBookでChicken of the VNCを起動して.iPhone/iPod TouchのIPアドレスを入力し「Connect」ボタンを押す
パスワードは空のままでOK

Chicken of the VNC

iPhone/iPod Touchの画面にMacBookのIPアドレスが表示されるので,「Accept」を選択すると,MacBook上にiPhone/iPod Touchの画面が表示される
iPhone/iPod Touchを使ったデモやプレゼンをする時に便利そうだ

Chicken of the VNC


次は逆に,iPhone/iPod TouchからMacBookに接続してみる

まず,MacBookでVine Serverを起動する

Vine Server

パスワードを設定するかどうか聞かれるが,今回はテストということでパスワードは設定しなかった
VeencyではiPhone/iPod Touch向けということで,接続を許可するかどうかダイアログが表示されていたが,Vine Serverでは表示されない
日常的に使うなら必ずパスワードを設定したい

iPhone/iPod TouchでMocha VNC Liteを起動して,「Conncet」ボタンを選択すると,設定画面が表示される

Mocha VNC Lite 1 Mocha VNC Lite 2

「VNC Server IP address」の欄にMacBookのIPアドレスを入力する
今回はパスワードを設定していないので空のままで接続しようとしたが,エラーが発生する
「VNC Password」の欄に半角スペースを1文字入れてやると回避できた

Mocha VNC Lite 3

Mocha VNC Lite 4

Mocha VNC Liteは,ビューの回転にも対応している
ピンチングすれば画面の拡大や縮小も可能で,マウス操作やキーボード入力など一通りの作業ができるようになっている


最後に特に意味はないけど,MacBook -> iPhone/iPod Touch -> MacBookとループするように接続してみた
結果.画面の中に画面が表示されるので,予想通りの画像が得られた

Written by h2 in: ガジェット | タグ: ,
9月
26
2008
7

iPod Touch用GPS作成

GPS1 GPS2

もう2ヶ月以上前の話ですが,iPhoneやiPod Touchのドックコネクタに付ける外付けGPSを作りました

とりあえずケースはフリスクのを流用(自分はフリスク苦手なので知り合いに頑張って食べてもらいました)
試作ということで・・・かなり適当な作り&スカスカです
頑張れば半分くらいの大きさになるでしょう

使用したGPSユニットはGM-318です
受信感度も良くかなり正確で,自宅の窓際に置くとどの部屋にいるのか分かるくらいです
受信も40秒ほどで安定するので十分許容範囲!!

思い出したついでに簡単なソフトを作ってみました

GPS Test Application
 
とりあえずOpen Mapを押すとMap.appで現在地を表示するようにしました

日本全国取り込んである地図と連携させて,簡易ナビにする予定
充電しながら使えるようにする予定やけど,GPSユニットをスタンバイさせられるらしいので,マイコンを挟んでやるのもアリかな

Written by h2 in: ガジェット | タグ:

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co