"Where is your ship heading for?" is an eternal question - Where the hell is the place you/me/we are seeking for, or SHOULD be seeking for? No one tells you. There's no nothing the correct answer. You might be the only who can answer it. Are you prepared enough to tell me what drives you most?
2010年12月19日
2010年11月29日
(調査中)iPhone 4.2.1のAirPrintをブラザーのプリンタでダイレクト印刷
やっぱり、自分の持っているプリンタでAirPrintしたい。それもPCを介さずに、ダイレクトに。
幸いなことに私の持っているプリンタはBonjour (mDNS)対応のプリンタであり、なんとかAirPrintできそうだ。
ネットで探せば、あるソフトを使うとAirPrintでプリンタ共有されているPCを介して印刷できる。まあこれだけでも大きな進歩だが、やはりiPhoneから直接プリンタへ出力したい。その方法を丸1日調査したところ少し光が見えてきた。といっても(まだ)正直言って成功していない。後一歩なので今後いろいろ調べて印刷できるようにしたい。
さて、私の持っているBrother MFC-9840CDWだが、これはAirPrint対応でなく、プリントしようとしてもiPhoneからプリンタが見つからない。4.2.1へアップグレードした(対応プリンタを持っていない)誰もがこれに遭遇するだろう。これはAirPrintがmDNSサービスレコードに一定の条件で問い合わせているためである。この条件は以下の2つである。
ここで実験であるが、WindowsやMacにはmDNSへサービスを登録するコマンドが存在する。
"dns-sd" コマンドである。このコマンドを使えばmDNSへ自由にサービスが登録できるので、プリンタのために私が手作業で登録してやることができる。以下のように-Pオプションを使用してコマンドを実行する:
dns-sd -P 名前 _ipp._tcp,_universal "" ポート ホスト名.local IPアドレス TXTレコード
(斜体には実際の値が入る)
名前:何でもいいでしょう。好きな名前を入れる。
ポート:これは通常631。Internet Printing ProtocolのWell-knownポートである。
ホスト名:これはプリンタのネットワーク登録名である。
IPアドレス:プリンタのIPアドレス。
TXTレコード:これはプリンタに依存するものが含まれる。たとえばこんな感じ
txtvers=1 priority=50 pdl=application/vnd.hp-PCL, type="Brother MFC-9840CDW" Color=T qtotal=1 ... URF=W8,SRGB24,DM1,CP255,RS600
dns-sd -P "Brother Printer" _ipp._tcp,_universal "" 631 BRDBB.local 192.168.0.22 txtvers=1 pdl=application/vnd.hp-PCL type="Brother" Color=T qtotal=1 URF=W8,SRGB24
さて上記で、気をつけるのが _ipp._tcp,_universal とサブタイプをつけていること、TXTレコードにURFを含めることである。URFについてはよくわからないがラスターフォーマット指定であろうか。
これでmDNSで登録してやれば少なくともiPhoneのAirPrint機能でプリンタを見つけてくれる。
しかし、残念なことにこれでもまだiPhoneから印刷が成功しない。プリントを実行すると一見プリント処理はされたかのようにふるまうが、実際にデータがプリンタまで届いていない。どうもiPhone側では送信のリトライをし続けているように見えるが、ネットワークへ送り出してもいない。ためしにポートを9100(PDL Datastream)へ変えてみるとプリンタへデータは送付され、文字化けしたものが印刷される。
なぜIPPポートでデータが送信できないのかがまだわからない。
ちなみに、ePrintでは手作業で登録したサービスでまったく問題なく印刷ができ、本体情報(トナー残量等)も取得できている。つまり、AirPrintにはまだTrickyな仕掛けがあるに違いない。
まだまだ先は長そうだ。
幸いなことに私の持っているプリンタはBonjour (mDNS)対応のプリンタであり、なんとかAirPrintできそうだ。
ネットで探せば、あるソフトを使うとAirPrintでプリンタ共有されているPCを介して印刷できる。まあこれだけでも大きな進歩だが、やはりiPhoneから直接プリンタへ出力したい。その方法を丸1日調査したところ少し光が見えてきた。といっても(まだ)正直言って成功していない。後一歩なので今後いろいろ調べて印刷できるようにしたい。
さて、私の持っているBrother MFC-9840CDWだが、これはAirPrint対応でなく、プリントしようとしてもiPhoneからプリンタが見つからない。4.2.1へアップグレードした(対応プリンタを持っていない)誰もがこれに遭遇するだろう。これはAirPrintがmDNSサービスレコードに一定の条件で問い合わせているためである。この条件は以下の2つである。
- subtypeが_universalであること
- TXTレコードにURFのキーがあり、かつEmptyでないこと
ここで実験であるが、WindowsやMacにはmDNSへサービスを登録するコマンドが存在する。
"dns-sd" コマンドである。このコマンドを使えばmDNSへ自由にサービスが登録できるので、プリンタのために私が手作業で登録してやることができる。以下のように-Pオプションを使用してコマンドを実行する:
dns-sd -P 名前 _ipp._tcp,_universal "" ポート ホスト名.local IPアドレス TXTレコード
(斜体には実際の値が入る)
名前:何でもいいでしょう。好きな名前を入れる。
ポート:これは通常631。Internet Printing ProtocolのWell-knownポートである。
ホスト名:これはプリンタのネットワーク登録名である。
IPアドレス:プリンタのIPアドレス。
TXTレコード:これはプリンタに依存するものが含まれる。たとえばこんな感じ
txtvers=1 priority=50 pdl=application/vnd.hp-PCL, type="Brother MFC-9840CDW" Color=T qtotal=1 ... URF=W8,SRGB24,DM1,CP255,RS600
dns-sd -P "Brother Printer" _ipp._tcp,_universal "" 631 BRDBB.local 192.168.0.22 txtvers=1 pdl=application/vnd.hp-PCL type="Brother" Color=T qtotal=1 URF=W8,SRGB24
さて上記で、気をつけるのが _ipp._tcp,_universal とサブタイプをつけていること、TXTレコードにURFを含めることである。URFについてはよくわからないがラスターフォーマット指定であろうか。
これでmDNSで登録してやれば少なくともiPhoneのAirPrint機能でプリンタを見つけてくれる。
しかし、残念なことにこれでもまだiPhoneから印刷が成功しない。プリントを実行すると一見プリント処理はされたかのようにふるまうが、実際にデータがプリンタまで届いていない。どうもiPhone側では送信のリトライをし続けているように見えるが、ネットワークへ送り出してもいない。ためしにポートを9100(PDL Datastream)へ変えてみるとプリンタへデータは送付され、文字化けしたものが印刷される。
なぜIPPポートでデータが送信できないのかがまだわからない。
ちなみに、ePrintでは手作業で登録したサービスでまったく問題なく印刷ができ、本体情報(トナー残量等)も取得できている。つまり、AirPrintにはまだTrickyな仕掛けがあるに違いない。
まだまだ先は長そうだ。
2010年11月27日
JailbreakしたiPhone 4.2.1でAppleマークが出た画面で止まってしまう
iPhone 4/iOS 4.2.1でJailbreakとCydiaインストールの最後でも少し注意書きをしておいたが、現在のところRedSn0w 0.9.6b3でJailbreakしたiPhone 4.2.1は通常の電源ON/OFF、リブート操作ではAppleマークが出た画面でとまってしまい、起動が完了しない。もしこうなってしまったら再びRedSn0wを用いないと起動できない。電源を切った後再び起動させるには以下の手順を踏めばよい。
つまり、現状、4.2.1をJailbreakすると、電源OFFもしくはリブートのたびにRedSn0w(と4.2.1のipsw)が必要になる。飛行機に乗るとき等RedSn0wの環境にアクセスできることを確認してから電源を切ろう。
- ロゴマークで固まっている状態で、iPhoneをPCと接続する。
- RedSn0w 0.9.6b3を立ち上げ、ipsw選択後、「Just boot tethered right now」を選択
- DFUモードにするインストラクションのところで、2.からはじめる。
つまり、電源ボタンとホームボタンを同時に10秒ホールドする。その後、電源ボタンを離し、ホームボタンを引き続き15秒間ホールドする。 - ホームボタンをホールドしているときにRedSn0wのGUI画面が遷移するが、気にせずにホームボタンを押し続けている必要がある。
つまり、現状、4.2.1をJailbreakすると、電源OFFもしくはリブートのたびにRedSn0w(と4.2.1のipsw)が必要になる。飛行機に乗るとき等RedSn0wの環境にアクセスできることを確認してから電源を切ろう。
2010年11月24日
iPhone 4/iOS 4.2.1でJailbreakとCydiaインストール
ほぼ1年ぶりのブログ更新となってしまいました。さて私事ですが、仕事の関係で日本を離れ、今暮らしているのはこの国、SIMフリーのiPhoneが買える数少ない国であります、オーストラリアです。
つい最近iOS 4.2.1が一般リリースされました。AirPrint対応のプリンタもっていないし、ストリーミングでわざわざiPhoneから音楽を飛ばしたいとも思わない私はあまりアップグレードする利点はないのですが、新しいもの好きとしてはどうしてもアップグレードしたくなるものです。そこであちこちのウェブで4.2.1でもJailbreakが可能なことを確認のうえ、アップグレードを慣行!
あちこちのウェブサイトでその方法は丁寧に述べられていますが、ここでも丁寧に解説いたします。それがこのブログの使命ですので。
さて、用意するのは、
必要なものをすべて用意したらredsnowを立ち上げ「Browse」から
iPhone3,1_4.2.1_8C148_Restore.ipsw
を指定。これは通常、
C:\Users\(ユーザ名)\AppData\Roaming\Apple Computer\iTunes\iPhone Software Updates
にあります。(Windows 7の例)
見つからない場合は、ipswをコンピュータ全体から検索すれば見つかるでしょう。
「Next」を押して、“Install Cydia”にチェックが入っていることを確認し、「Next」
iPhoneをPCへつなげ、iPhoneの電源を切っておきます。
この後DFUモードでJailbreak開始です。操作手順は画面に従えばよいのですが、画面見ながらだと焦ることがあるのでここでも書いておきます。
DFUモードにするには、
ここからが少し面倒です。現在のオリジナルのCydiaは4.2.1では正しく動作しません。このためPatchを当てる必要があります。
JailbreakできたらiFunBoxを使ってCydia.patch (cy-3.zip内のcy-3フォルダ内に入っています)をiPhoneへコピーします。コピー先はRaw File Systemの/Applications/Cydia.app/です。ドラッグ&ドロップで置けば簡単です。
次にiPhoneにSSHをインストールします。これはまたredsn0wを立ち上げ、
今度は「Install custom bundle」を選択し、ファイル選択ダイアログでSSH_bundle.tgzを選択します。あとは先ほどJailbreakした手順のとおりです。
さてSSH Bundleがインストールできたら、今度はtethered modeでブートする必要があります。
再びredsn0wを起動し、「Just boot tethered right now」にチェックを入れ同じように画面の指示に従います。
これが完了すればSSHが有効になったiPhoneが立ち上がります。iPhoneの「設定画面」からIPアドレスを確認し、PuTTYでiPhoneへ接続します。
デフォルトではログインは root/alpineです。これはどのiPhoneでも同じですので、セキュリティの観点で真っ先に替えたほうがよいです。とくにJailbreakされたiPhoneはそれだけでセキュリティが崩されていますのでこれは必須です。
ログインしたら、まずpasswdと入力し、自分の好きなパスワードを設定します。(パスワードは決して忘れないようにしましょう。)
あとは以下のコマンドを呪文のように入力していきます。
apt-get update
apt-get install bsdiff
cd /Applications/Cydia.app/
cp Cydia_ Cydia.bak
bspatch Cydia.bak Cydia_ Cydia.patch
chmod +x+s Cydia_
ここまでできたらCydiaは起動できる状態になります。ふたたびredsn0wを立ちあげて「Just boot tethered right now」を選択し、再起動をかけます。あとはCydiaを起動し、Updateをインストールすれば無事アイコンも表示され一番上の画像にあるところにたどり着きます。
注意!!
現在のところJailbreakしたiPhoneは一度リブートもしくは電源を切って再起動をかけようとするとreadsn0wなしでは正常に立ち上がらない現象に見舞われています。redsn0wでtethered bootの手順で起動しないと立ち上がらないようです。電源を切る必要のある場合はredsn0wとipswがある環境であることを確認しましょう。
多くの人がinstallousと、AppSyncをインストールすることでしょう。
ちなみにこのCydiaはまだいろいろと不具合があってレポジトリのAdd Sourceで入力フィールドが見えない状態になっていたりします。このときはめくら状態でキーボードからURL(http://以降)を入力します。
cydia.hackulo.us (http://cydia.hackulo.us)は、installousやAppSync for iOS 4.2 を入れるときに入れたいレポでしょう。
注意!!
きれいごとを言うようですが、installousでインストールしたアプリで、これはいい、と思ったアプリはちゃんとApp Storeで買いましょう。ソフトウェアは著作権が命です。人類のソフトウェア技術力向上のため、ご協力ください。
つい最近iOS 4.2.1が一般リリースされました。AirPrint対応のプリンタもっていないし、ストリーミングでわざわざiPhoneから音楽を飛ばしたいとも思わない私はあまりアップグレードする利点はないのですが、新しいもの好きとしてはどうしてもアップグレードしたくなるものです。そこであちこちのウェブで4.2.1でもJailbreakが可能なことを確認のうえ、アップグレードを慣行!
あちこちのウェブサイトでその方法は丁寧に述べられていますが、ここでも丁寧に解説いたします。それがこのブログの使命ですので。
さて、用意するのは、
- iOS 4.2.1へアップグレードしたiPhone 4
- redsn0w_win_0.9.6b3
- Cydia.patch
- SSH_bundle
- iFunBox (SFTPでもよい)
- putty (SSHクライアント)
必要なものをすべて用意したらredsnowを立ち上げ「Browse」から
iPhone3,1_4.2.1_8C148_Restore.ipsw
を指定。これは通常、
C:\Users\(ユーザ名)\AppData\Roaming\Apple Computer\iTunes\iPhone Software Updates
にあります。(Windows 7の例)
見つからない場合は、ipswをコンピュータ全体から検索すれば見つかるでしょう。
「Next」を押して、“Install Cydia”にチェックが入っていることを確認し、「Next」
iPhoneをPCへつなげ、iPhoneの電源を切っておきます。
この後DFUモードでJailbreak開始です。操作手順は画面に従えばよいのですが、画面見ながらだと焦ることがあるのでここでも書いておきます。
DFUモードにするには、
- 電源ボタンを3秒間押し続ける
- 電源ボタンを離さず、そのままホームボタンを10秒間押し続ける
- ホームボタンを離さずに、電源ボタンを離す。
- そのまま15秒待つ。ここで15秒経つ前に画面が切り替わりますが、そのまま押し続けている必要があります。
ここからが少し面倒です。現在のオリジナルのCydiaは4.2.1では正しく動作しません。このためPatchを当てる必要があります。
JailbreakできたらiFunBoxを使ってCydia.patch (cy-3.zip内のcy-3フォルダ内に入っています)をiPhoneへコピーします。コピー先はRaw File Systemの/Applications/Cydia.app/です。ドラッグ&ドロップで置けば簡単です。
次にiPhoneにSSHをインストールします。これはまたredsn0wを立ち上げ、
今度は「Install custom bundle」を選択し、ファイル選択ダイアログでSSH_bundle.tgzを選択します。あとは先ほどJailbreakした手順のとおりです。
さてSSH Bundleがインストールできたら、今度はtethered modeでブートする必要があります。
再びredsn0wを起動し、「Just boot tethered right now」にチェックを入れ同じように画面の指示に従います。
これが完了すればSSHが有効になったiPhoneが立ち上がります。iPhoneの「設定画面」からIPアドレスを確認し、PuTTYでiPhoneへ接続します。
デフォルトではログインは root/alpineです。これはどのiPhoneでも同じですので、セキュリティの観点で真っ先に替えたほうがよいです。とくにJailbreakされたiPhoneはそれだけでセキュリティが崩されていますのでこれは必須です。
ログインしたら、まずpasswdと入力し、自分の好きなパスワードを設定します。(パスワードは決して忘れないようにしましょう。)
あとは以下のコマンドを呪文のように入力していきます。
apt-get update
apt-get install bsdiff
cd /Applications/Cydia.app/
cp Cydia_ Cydia.bak
bspatch Cydia.bak Cydia_ Cydia.patch
chmod +x+s Cydia_
ここまでできたらCydiaは起動できる状態になります。ふたたびredsn0wを立ちあげて「Just boot tethered right now」を選択し、再起動をかけます。あとはCydiaを起動し、Updateをインストールすれば無事アイコンも表示され一番上の画像にあるところにたどり着きます。
注意!!
現在のところJailbreakしたiPhoneは一度リブートもしくは電源を切って再起動をかけようとするとreadsn0wなしでは正常に立ち上がらない現象に見舞われています。redsn0wでtethered bootの手順で起動しないと立ち上がらないようです。電源を切る必要のある場合はredsn0wとipswがある環境であることを確認しましょう。
多くの人がinstallousと、AppSyncをインストールすることでしょう。
ちなみにこのCydiaはまだいろいろと不具合があってレポジトリのAdd Sourceで入力フィールドが見えない状態になっていたりします。このときはめくら状態でキーボードからURL(http://以降)を入力します。
cydia.hackulo.us (http://cydia.hackulo.us)は、installousやAppSync for iOS 4.2 を入れるときに入れたいレポでしょう。
注意!!
きれいごとを言うようですが、installousでインストールしたアプリで、これはいい、と思ったアプリはちゃんとApp Storeで買いましょう。ソフトウェアは著作権が命です。人類のソフトウェア技術力向上のため、ご協力ください。
登録:
投稿 (Atom)