Readme for SHS17.ZIP 25-Aug-1998 Shsmod - Serial High Speed Mode設定ユーティリティ Version1.7 ●SHSMODとは? あまり知られていませんがAT互換機に使われているMulti IO chipには シリアルポートを通常のAT互換機の上限と言われている115,200bps以上に 設定できるHigh Speed Modeを持っているものが少なくありません。 但しデフォルトでは無効となってたりドライバーが対応していなかった りでそのままでは使えません。  shsmodはこれらのchipを判別し、High Speed Modeの設定及びWindows95 /98のシリアルドライバーへのパッチを行って115,200bps以上の転送レート を扱えるようにするユーティリティです。 115,200bpsではフルに性能を発揮できない場合、例えばISDN 128K,ISDN V.120, 33.6Kもしくは56K modem + V.42bis圧縮使用時などに役に立ちます。 そのほか橘屋鶴蔵氏(http://www.butaman.ne.jp:8000/~tsuruzoh/)作の ディジタルカメラコントロールユーティリティ、cameと併用して一部のデ ィジタルカメラで115,200bpsを越える速度でのシリアル転送を行うのにも 使えます。 サポートするチップ ALI:(230400,460800bpsサポート) M1543 NS:(230400,460800,921600bpsサポート) PC87308 PC87307,97307,87317,97317 PC87309 PC87338 SMC:(230400,460800bpsサポート) 37C665IR/666IR 37C669/669FR,37N769 37B72/B77/B78/B80,37C67x/68x/93x/93xAPM/93xFR,37M60x/61x,37N958FR WinBond:(230400,460800,921600bpsサポート) W83877TF W83977A/AF/TF/ATF サポートしないチップ(紛らわしいものの一部のみ) NS PC87306,PC87336 機能無し。 SMC37C665GT,666GT 機能無し。 WinBond W83777 機能無し。 WinBond W83877F/AF 仕様バグ。 WinBond W83877ATF データシート無し。 サポートを見送ったチップ NS PC87338 βテスト未了 NS PC97338 ID不明 ●使い方 1. SHSMODを適当なディレクトリに展開します。 2. 既にSHSMODがインストールされている場合は"SHSMOD uninstall"ショートカ ットアイコンをダブルクリックして一度、アンインストールしてから5に進みま す。リスタートする必要はありません。 3. 次に"SHSMOD check"ショートカットアイコンをダブルクリックして使用チッ プのチェックを行います。以下のように表示されればサポート対象のチップが 使われています。 表示例) shsmod V1.7 SMC37C669 at 03f0h detected Original driver detected Port1(03f8h) Serial Speed Mode: Low Port2(02f8h) Serial Speed Mode: Low サポート対象外のチップの時は以下のようなエラーメッセージが出ます。 shsmod V1.7 (25-Aug-1998) !!! Not ALI M1543(Aladdin IV+,V south bridge) chip !!! !!! Not NS PC87307/87308/87309/87317/97307/97317 chip !!! !!! Not SMC37B72x/77x/78x/80x chip !!! !!! Not SMC37C665IR/666IR/669/669FR/67x/68x/93x/93xAPM/93xFR chip !!! !!! Not SMC37M60x/61x,37N769/958FR chip !!! !!! Not Winbond W83877TF,W83977F/AF/TF/ATF chip !!! こうなったら諦めてください。諦めの悪い人は後述の「判定結果に納得で きないとき」の項目を見てください。 4.インストール 次に、適当なディレクトリを作ります。このディレクトリから起動する よう、AUTOEXEC.BATに書き込むのであまりいい加減なところは避けた方が 賢明です。 推奨は\bin\shsmodでしょうか。そこにアーカイブの中身をすべてをコピー して"SHSMOD install"ショートカットアイコンをダブルクリックします。 shsmodはserial driverのバックアップを作成した後、適切なパッチを 当て、Autoexec.batに"SHSMODのあるディレクトリの絶対パス\SHSMOD B H" という行を追加します。 注意:この指定はシリアルポートを両方ともHighに設定しますが、IrDA等に 使われているポートは誤動作する場合があります。また、Winbondチップで シリアルマウスを使用していると認識されなくなるのでSYSEDIT等で必要な ポートだけ指定するように書き換えてください。 動作例) shsmod V1.7(25-Aug-1998) SMC37C669 at 03f0h detected Original driver detected copy c:\windows\system\serial.vxd c:\windows\system\$erial.vxd 1 個のファイルをコピーしました. Backup original to $erial.vxd successful. Apply SMC Patch successful. copy C:\AUTOEXEC.BAT C:\AUTOEXEC.SHD 1 個のファイルをコピーしました. Backup AUTOEXEC.BAT successful. SHSMOD will replace line, REM C:\BIN\SHSMOD.EXE B H -> C:\BIN\SYSTEM\SHSMOD.EXE B H copy C:\AUTOEXEC.TMP C:\AUTOEXEC.BAT 1 個のファイルをコピーしました. Overwrite AUTOEXEC.BAT successful. *** Restart windows to take effect. *** 5.Windowsをリスタートしてください。 6.チェック リスタート後、再び"SHSMOD check"ショートカットアイコンをダブル クリックして、ドライバーに当てたパッチは正しいか、モードは"H"にな っているかを確認しておしまいです。問題がある場合は「トラブルシュー ティング」の項を参照してください。 実際に使えるかどうか試すには、ハイパーターミナルで、その速度を受 けつけるTAやモデムと接続してみるのが簡単です。多くのTA/モデムが"AT\S" コマンドでDTEスピードを答えます。SレジスタにDTEスピードが入るものもあ ります。例えばZyXELのTAは"ATS20?"で230400bpsの時0を、460800bpsの時14 を、921600bpsの時15を返します。詳しいS20レジスタの値と速度の関係は"AT$" コマンドででるオンラインマニュアルで確認してください。 実際に通信して速度を測ってみるのも手です。 7.レポート SHSMODはレポートウェアです。うまく動作した場合、SHSMOD check"ショート カットアイコンをダブルクリックした結果を http://www1.yk.rim.or.jp/~gigo/bbs/tstcatbbs.cgi に書き込んでください。うまく行かなくて納得できない場合、質問などがある 場合は、 http://www1.yk.rim.or.jp/~gigo/bbs/gigocatbbs.cgi に書き込んでください。 レポートはメールでも受け付けます。質問は掲示板にお願いします。メールでの 質問は原則的に受け付けません。 ●コマンドシンタックス 一般的にはインストール/アンインストールだけ知っていれば良いと思い ますが、コマンドシンタックスを以下に示しておきます。 表示のみ shsmod 表示例) shsmod V1.6 SMC37C669 at 03f0h detected Original driver detected Port1(03f8h) Serial Speed Mode: Low Port2(02f8h) Serial Speed Mode: Low 両方のPortのHSModeを有効にする。 shsmod B H *ALI/SMCの場合HSModeにしてもよほどひねくれたもので無い限り従来のプログ ラムには影響が無いのでこれがお勧めです。 *WinBondの場合、対応パッチを当てたら必ずHにしないと1/8の速度になって しまいますのでこれがお勧めです。昔のDOSプログラムなど直接ポートを叩く ようなアプリケーションを使うときのみLにしてください。 *NSの場合も対応パッチを当ててLのままにすると1/8の速度になってしまいま すのでこれがお勧めです。PC87308を除いて昔のDOSプログラムなど直接ポート を叩くプログラムであってもLにする必要はありません。というか、一度Hにし てしまうとLに戻せないのですがその必要はないので問題ありません。一部のMB では最初からHになっていることもあります。 NS版(PC87308を除く)だけの機能として、昔のDOSプログラムなど直接ポートを 叩くアプリケーションの速度を固定できます。例えばSHSMOD 1 230400とすると、 アプリケーション側の設定にかかわらず常に230400bpsになります。0を指定する ことでアプリケーションから速度が変えられる通常のモードにもどります。 なお、Windowsプログラムの速度を固定することは出来ません。 両方のPortのHSModeを無効にする。 shsmod B L Port1のHSModeを有効にする。 shsmod 1 H Port2のHSModeを有効にする。 shsmod 2 H Port1のHSModeを無効にする。 shsmod 1 L Port2のHSModeを無効にする。 shsmod 2 L *Port番号とCOM nのnとは必ずしも一致しないので表示されるアドレスを 見て確認してください。 *オリジナルのドライバーではHに設定できません。 *NS版では一度、HにするとLに戻せません。 *Winbond版で古いDOS版のソフトで速度がx8になった時は"L"にしてください。 SHSMOD patch [winpath] winpathにあるserial.vxdにパッチを当てます。[winpath] を指定しない場合、%windir%\systemをwinpathとします。 %windir%もない場合は"C:\Windows\System"になります。 次にAutoexec.BATにSHSMOD B Hという行を追加します。 SHSMOD depatch winpathにあるserial.vxdを元に戻し、Autoexec.BAT中の関係する行をREM文 にして無効にします。 ●アンインストール "SHSMOD uninstall"ショートカットアイコンをダブルクリックし、 再起動後、ディレクトリを削除してください。 動作例) shsmod V1.7(25-Aug-1998) SMC37C669 at 03f0h detected SMC Patch driver detected copy c:\windows\system\$erial.vxd c:\windows\system\serial.vxd 1 個のファイルをコピーしました. Restore vxd backup file successful. copy C:\AUTOEXEC.BAT C:\AUTOEXEC.SHD 1 個のファイルをコピーしました. Backup AUTOEXEC.BAT successful. SHSMOD will replace line, C:\BIN\SHSMOD.EXE B H -> REM C:\BIN\SHSMOD.EXE B H copy C:\AUTOEXEC.TMP C:\AUTOEXEC.BAT 1 個のファイルをコピーしました. Overwrite AUTOEXEC.BAT successful. *** Restart windows to take effect. *** バックアップ、$serial.vxdが無い場合はコピーで戻せないため、デパッチ を行います。この場合、ドライバーの日付は元に戻せません。 その他、テスト/デバッグ用のシンタックスはソースを見てください。 ●サポート状況 WindowsNT: V1.5以降は動作しません。もともとNTでは動きませんが。 Linux: FreeBSD: 使い方はソースのコメントを見てください。Linuxでは排他的に実行できない ため、判定/設定に失敗することがあります。全く判定できない環境もあるよう です。 ●トラブルシューティング うまく動作しない場合、インストール後、"SHSMOD check"ショートカットア イコンをダブルクリックして正しいドライバーになっているか、Highに設定され ているか確認してください。正しいドライバーになっていない場合は一度、デパ ッチして、再度パッチしてください。Highに設定されていない場合は、コマンド ラインからSHSMOD B Hとタイプして正常に動作するようになったか確認し、問題 なければAUTOEXEC.BATに付け加えた行が起動時に実行されるか確認してください。 ●障害 現在、未解決の障害報告はありません。 ●判定結果に納得出来ない時 サポートされているチップのはずなのに認識されない時はバニラDOSで試し、 それでも駄目ならコンフリクトが無いか調べてください。一部のM/Bではマニ ュアルに665IR/666IR/669,93xなどと書いてあってもUMC8669F,WinBond W83877 F,ALI5119などが使われていることが有ります。今のところ誤判定の報告はあ りませんが自分の目で確認するのが確実でしょう。 なお、該当のチップが載っていてもserialの機能は使っていないため効果が 無いという構成も有り得無くはありません。 またSMC37C665/6はアドレス3F0と3F1を使っています。X7F0,X7F1,XBF0,XBF1, XFF0,XFF1などもぶつかる可能性があります。さらに669/67x/68x/93x/957では 370,371に割り当てることも出来るのでX770,X771,XB70,XB74,XF70,XF71がぶつ かることも有り得ます。 さらに諦めの悪い人はコマンドラインから"SHSMOD B C"と打って、その結果 を調べてみる手もありますがお勧めしません。なお、SMC665GT,WinBond W83877A/AF, NS PC87306,PC87336などは既に駄目と判明しています。 ●CopyRight  SHSMODはレポートウェアです。継続して使用する場合は正確な機種名に SHSMODの判定メッセージを添えて報告してください。但し、既に同一バージョ ンで動作報告のあるチップを使ったリストにない機種の場合は気が向いたらで 結構です。 レポート専用掲示板 http://www1.yk.rim.or.jp/~gigo/bbs/tstcatbbs.cgi その他の扱いはフリーウェアに準じます。 ○ALI M1543を使用している機種 Aladdin IV+,Vを使用している機種の大半。M1543はAladdin IV+,Vの south bridgeです。ただし、MIOの無いSouth bridge,South Bridge 内のMIOを使用していないMBもあります。 ○665IR/666IR,669を使用している機種(推定含む) ASUS: P55TP4XE,P55T2P4(Rev 2.3C以前) ATT: Globalyst 520,530,550,590,600,620,630,200S Compaq: Prolinea III series DEC: Digital HiNote/Hinote Ultra EPSON: VM466R/VD466R FUJITSU: FMV-4100D4,FMV-466D4,FMV-5100D4,FMV-575D4 Olivetti: Desktop TOSHIBA: J-3100 PV590 ○93xを使用している機種(推定含む) 富士通 FMV-5133D5,5120D5,5100D5,575D5,590C3,5133DE3,5100DE3,5133T3 FMV-TOWNS Fresh・GS,Fresh・GT,FMV-TOWNS model H IBM Aptiva 765,PC-330(6873-JCP) 日立 FLORA 500 ○97xを使用している機種(推定) NEC ValueStarシリーズ ○W83877TFを使用している機種 1998年以降に設計された台湾メーカー製Pentium(Socket7) M/Bの大半 ○W83977を使用している機種 1998年以降に設計された台湾メーカー製PentiumII(Slot1)M/Bの大半 ASUS P2Bシリーズなど ○NS製MIOチップを使用している機種。 Intel OEM MotherBoard(Gateway2000, 富士通製Pentium Pro機などが使用) DELL PentiumII 300(97307) IBM Personal Computer 300GL(87307) FMV6200T5(87308) Micron ????(?????) 以下、ご報告をお待ちしています。追加分は下記、レポート用掲示板 を参照してください。 レポートはメール(mailto:gigo@yk.rim.or.jp)でも受け付けますが 出来る限り専用掲示板 http://www1.yk.rim.or.jp/~gigo/bbs/tstcatbbs.cgi に、 質問は http://www1.yk.rim.or.jp/~gigo/bbs/gigocatbbs.cgi にお願いします。メールでの質問は原則として受け付けません。 ●配布について 改変したものを紛らわしい形で配布しないでください。それ以外なんの制限も ありません。無保証。ソース付き。 ●改訂履歴(詳細はソースコードも見てください) 25-Aug-98 V1.7 NS対応正式リリース Winbond W83877TF対応 ALI M1543(Aladdin IV+,V South bridge)対応 23-Jul-98 V1.5 WinBond W83977対応。 Windows98対応。 ●協力してくださった方々(一部) mizuhara@ca2.so-net.or.jp mio-h@ca2.so-net.or.jp chino@ca2.so-net.or.jp dmcnutt@wilma.widomaker.com jimwhite@ij.net tsuruzoh@butaman.ne.jp ytakeuch@po.iijnet.or.jp Joseph B. Wehbi ●献辞 本物の次世代、天平と七海に。 -------------------------------- 25-Aug-1998 V1.7 gigo@yk.rim.or.jp http://www1.yk.rim.or.jp/~gigo/ Appendix.1 モデムの最高速度を変更する方法 希にモデム/TA自体は115,200bps以上の速度をサポートしているのに コントロールパネル->モデム->プロパティ->最高速度 で115,200以上に設定できないことがあります。 この場合、 1)modem.infを書き換える。 modem.inf(一般的な名前は決まっていないようです。俗に言うモデムドライバ) を書き直す方法は、 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9703.html#9703310451 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9703.html#9703312233 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9704.html#9704051119 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9709.html#9709070510 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9709.html#9709070730 http://www1.yk.rim.or.jp/~gigo/bbs/gigobbs9710.html#9710151603 などを参考にしてください。 2)レジストリエディタで直接書きかえる方法 レジストリエディタなど恐くないという人向け。 接続しているCOMポート名、例えばCOM1で検索します。いくつかみつかりますが、 HKEY_LOCAL_MACHINES\System\CurrentControlSet\Services\Class\Modem\nnnn の下のattachedtoにあるのが目的のものです。無効に設定されていたりして見つ からない場合は直接開いても良いですが、せっかく設定したものが有効になった ときに元に戻ることがあります。 項目を眺めてそれが目的の定義だと分かったらattachedtoと同じレベルにある propertiesを開きます。 24番目(表示は16進数なので0x18のところ)の4バイトを以下のように変更します。 bps value 57,600 00 E1 00 00 115,200 00 C2 01 00 230,400 00 84 03 00 460,800 00 08 07 00 921,600 00 10 0E 00 Appendix.2 FAQ Q1.シリアルオーバーランエラーが多発するのですが。 A1.シリアルオーバーランエラーは「早すぎて間に合わず、取り落とした」 ということです。SHSMODは115,200以上の速度に設定できるようにするもので シリアルポートの性能自体を上げるものではないので速度を上げればこのエラー が加速度的に増加するのは当然です。まともなシステムであればこれはゼロの はずで、一回でもこのエラーが出るようならその速度はその環境には荷が重い と言うことです。 といってもシリアルの速さなどたかが知れているので、460,800でもP5/90程度 で楽勝で間に合います。それが間に合わないのは、傍若無人に振る舞うアプリ ケーションかドライバがあるのでしょう。NTだと好き勝手に振る舞えるのはド ライバだけなのでMatroxのVideo cardと言った札付き(ただし、これも紳士とし て振る舞わせる方法が明記されてます)が居なければ問題ないのですが95の場合、 無法地帯なのでこういうのがいるといくらマシンを早くしてもあまり効果があり ません。その他、FIFOの設定がされていないとかスレッショルドの設定がおかし いとかの可能性もありますが。 要は速度を上げたために元々その環境の抱えていた問題が顕在化したという極々、 当たり前の話です。 また、オーバーランエラーが起こってもきちんとしたプロトコルを使っている限 り、極端に遅くなることはあってもデータが欠けたり化けたりすることは無いは ずでこういうことが起こるシステムはどこかに爆弾を抱えている可能性が非常に 高いので要注意です。 なお、NSのチップにはFIFOが32バイト積まれていますし、DMAをかけることも出来 るのでこれらを有効に使うドライバを書けばCPUが気絶でもしない限り取り落とさ ないシステムができるでしょう。こういうのが必要な人は自分で書いてください。 うちにはシリアルオーバーランを起こすような野放図に育てた環境が無いので全く 必要を感じません。^-^; Q2. 私のW83877が認識されません。 A2. W83877はTFのみサポートです。データシートには他のバージョンも230,400bps 460,800bpsなどをサポートするかのように書いてありますが、UARTにはbpsのx16倍 のクロックが必要だという基本的なことを完璧に忘れているので実際には出来ませ ん。 Q3. ACPIを有効にするとDisableと表示されます。 A3. 実際に使うとき以外はDisableされているようです。気にしなくて大丈夫です。 Q4.NT版は? A4.しばらくお待ちください。待てない人は自分で書いてください^-^; Q5. シリアルマウスが認識されなくなりました。 A5. Winbondの場合、制限事項です。シリアルマウスが使用しているポートをHに 設定しないでください。 例えば、ポート1がシリアルマウスならSHSMOD 2 Hでポート2のみHに、その逆なら SHSMOD 1 Hでポート1のみHになるようAUTOEXEC.BATのSHSMOD B Hの行を書き換えて ください。 Q6. PC87338が認識されません。 A6. βテスト未了のため削除されています。ソースの#define PC87338の行を有効に してコンパイルしてください。βテスト未了だと言うことを忘れずに。