  Linmodem-HOWTO
  Sean Walbran sean(at)walbran.org and          Marvin
  Stodolsky stodolsk(at)erols.com
  v0.42, 15 December 2000
  翻訳：川岸 良治 (kawagisi@yk.rim.or.jp)
  日本語訳：2001年1月3日

  このドキュメントは、Linux における Linmodem (winmodem ハードウェア)の
  サポートについて説明しています。このようなサポートは、現時点では極めて
  限定的です。ほとんどはメーカで作成され、サポートは無く、バイナリ形式の
  カーネル・モジュールのみです。このドキュメントは、ソースコードではな
  く、これらのバイナリ・モジュールを扱う上で特有のやっかいな状況について
  言及します。特にバイナリとカーネルが一致しない組み合わせで使うことに焦
  点をあてます。
  ______________________________________________________________________

  目次

  1. はじめに
     1.1 版権
     1.2 免責
     1.3 謝辞
     1.4 更新と修正

  2. Linmodems
     2.1 Linmodem とは何か?
     2.2 どの Linmodem ハードウェアがサポートされているか？
     2.3 私の GeeWhiz 9.8.7 モデムやラップトップに、これらのチップセットが         あるかどうかは、どうすれば分かりますか？
        2.3.1 システムからの情報
        2.3.2 モデムの名前とID 番号
        2.3.3 内蔵モデム付きラップトップ

  3. 一般的な設定とカーネルモジュールの問題
     3.1 カーネルモジュールのサポート
     3.2 サウンドのサポート
     3.3 ISA プラグ・アンド・プレイ
     3.4 PCI モデム
     3.5 モジュール・ツール
        3.5.1 insmod -f
        3.5.2 modprobe
        3.5.3 rmmod
        3.5.4 depmod

  4. 異なるカーネルバージョンでコンパイルされているモジュールのための        Tips とトリック
     4.1 Fixscripting
     4.2 tty.h のパッチ
     4.3 カーネル 2.2.14 から ppp.o を使う

  5. 特定のチップセットと、そのドライバ
     5.1 Lucent LT
        5.1.1 概要
        5.1.2 メーカ製のドライバ version 5.78 - インストール
        5.1.3 メーカ製のドライバ version 5.68 - インストール
        5.1.4 オープンソースのツール - インストール
     5.2 ESS
        5.2.1 概要
        5.2.2 インストール
     5.3 PCTel
        5.3.1 概要
        5.3.2 インストール
     5.4 Conexant/Rockwell HSF
     5.5 Intel (もとは Ambient Technology, もとは Cirrus Logic)
     5.6 3Com Mini-PCI

  6. トラブルシューティング
  7. FAQ
     7.1 私は winmodem を持っていますが Linux で動くでしょうか？
     7.2 "device or resource busy" というエラーがでました。
     7.3 fixscript または insmod で "unresolved symbols" になりました。
     7.4 PCTel のモデムが動作しません。
     7.5 モデムがダイヤルして接続できますが、コネクションが落ちます。
     7.6 コネクションを閉じるか、ドライバをアンロードするとカーネル・パニック         が起きます。
     7.7 何も動いていないようにみえます。誰に助けを求めればよいでしょう？
     7.8 winmodem のドライバは誰が書いたのですか。彼(女)と連絡をとるには         どうすればよいですか？

  8. 付録
     8.1 PCTel モジュールパラメータ： カントリーコード

  9. 日本語訳について

  ______________________________________________________________________

  1.  はじめに

  これは、Linux Linmodem HOWTO ドキュメントです。いわゆる winmodem を
  Linux で動作させる方法はあるのか、もしあるとすれば、それはどのようにす
  ればよいのか、ということを援助するためのクイックリファレンスとなること
  を目的としています。あなたは winmodem に対するサポートは、たぶん ない
  ことを最初に理解しておく必要があります：現時点では、このようなモデムの
  ための限定的なサポートがありますが、多くの場合ベンダで作成されるものの
  ベンダはサポートしないという形で、バイナリのみのカーネル・モジュールで
  す。しかし、少数のオープンソース・プロジェクトが存在します。

  強調しますが： Linux での最善の策は 確かに 本物のハードウェア・モデム
  を入手することです。しかし、あなたが winmodem で行き詰まっているなら、
  たぶん、このドキュメントは役にたつでしょう。

  利用可能な Linmodem ドライバに関する最新情報は Rob Clark のサイト
  <http://www.kcdata.com/~gromitkc/winmodem.html#drivers> 【訳注1：
  Winmodems are not modems というタイトルの Winmodem に関する最も有名な
  サイト】と Linmodems.org <http://www.linmodems.org/> のサイトを訪ねて
  ください。一般的なモデムの問題(例えば IRQ の設定とダイヤルアップ・スク
  リプト)は、 Modem-HOWTO <http://www.linuxdoc.org/HOWTO/Modem-
  HOWTO.html>, Serial-HOWTO <http://www.linuxdoc.org/HOWTO/Serial-
  HOWTO.html>, PPP-HOWTO <http://www.linuxdoc.org/HOWTO/PPP-
  HOWTO/index.html> で、そして他の関係する HOWTO は Linux Documentation
  Project <http://www.linuxdoc.org/> のサイトで、より総合的にずっと完全
  に扱われます。

  【訳注2】これらの HOWTO を日本語に翻訳したものが JF プロジェクト
  <http://www.linux.or.jp/JF/> にあります。

  【訳注3】その他の日本語による Winmodem/Linmodem の情報： Winモデムはモ
  デムではない <http://www.propel.ne.jp/~mako//winmodemj/winmodemj.html>
  (前記の Winmodems are not modems というサイトの翻訳)、 Winmodems-and-
  linux-HOWTO (日本語訳) <http://www.linux.or.jp/JF/JFdocs/Winmodems-
  and-Linux-HOWTO.html>、 Lin モデム(linmodem)ドライバで Win モデ
  ム(winmodem)を動かそう <http://www.yk.rim.or.jp/~kawagisi/>

  【訳注4】 このドキュメントでは、メールアドレスの @ は、全て (at) と
  なっています。原著者に確認したところ、SPAM メール対策のためにこういう
  表記にしたとのことです。従って、例えば hoge(at)fuga.org のようになって
  いるものは、hoge@fuga.org と読み替えてください。

  1.1.  版権

  Copyright (c) 2000 by Sean Walbran, Marvin Stodolsky

  このドキュメントを自由にコピーしどのようなフォーマットででも配布（売
  る、またはただであげる）してください。訂正やコメントをドキュメントのメ
  インテナーに送ることが要請されています。以下の条件を満たす場合に限り、
  派生的作品を作成し、配布することができます。

  o  あなたの派生的な仕事（sgmlのような最適のフォーマットで）を LDP
     (Linux Documentation Project) か、それに類する団体にインターネット
     上でポストして送ってください。 LDP でなければ、LDP がそれを利用でき
     るところを知らせてください。

  o  これと同じライセンスまたは GPL を使って派生的な仕事をライセンスして
     ください。著作権に関する告知と、少なくとも使用するライセンスのポイ
     ンタを含めてください。

  o  もとの著者と主な貢献者に、しかるべき謝辞を与えてください。

  あなたが翻訳以外の派生的な作業をすることを考えているなら、そのプランを
  現在のメインテナーと論議することが要請されます。

  1.2.  免責

  このドキュメントの情報は、あなた自身の責任で使ってください。私は、この
  ドキュメントの内容のどんな潜在的義務も否認します。このドキュメントの概
  念、例、および／またはその他の内容を使用することは、全面的にあなた自身
  の責任です。

  全ての著作権は明記されない限り、そのオーナーによって所有されます。この
  ドキュメントでの専門用語の使用は、いかなる商標あるいはサービスマークの
  妥当性にも影響を及ぼすものと考えられてはなりません。特に、"Winmodem"
  という用語は US Robotics/3Com 社の商標であるため、我々はここでは
  "winmodem" という用語を Rob Clark が行ったのと同様に使います。つまり
  「Winmodems(tm), host-based モデム、HCF-モデム、HSP-モデム、と全てのモ
  デムのようなハードウェアに類似したもの」を "winmodem" と読み替えます。
  Linux は、Linus Torvalds の商標です。

  特定の製品名またはブランド名を推奨するものとみなさないでください。

  あらゆるインストール手順の前に重要な、そして／または関連するファイルを
  バックアップすることを強く推奨します。

  1.3.  謝辞

  多くの個別の謝辞は、テキストの本文の中の適切なところにあります。

  このドキュメントに含まれる大量の情報は、 Rob Clark のサイト
  <http://www.kcdata.com/~gromitkc/winmodem.html>, Linmodems.org
  <http://www.linmodems.org/>, と、そのメーリングリスト、および Werner
  Heuser のページ Mobilix <http://mobilix.org> のような様々なすばらしい
  ソースを元にしています。

  Mark Spieth (mark(at)digivation.com.au) の討論、アドバイス、複数のそし
  て進行中の貢献に感謝します。

  このドキュメント自体は、Stein Gojen によって作成された SGML HOWTO テン
  プレート HOWTO-HOWTO <http://www.linuxdoc.org/LDP/LDP-Author-
  Guide/index.html> を使って作りました。

  1.4.  更新と修正

  このドキュメントの最新の HTML バージョンは
  <http://walbran.org/sean/linux/linmodem-howto.html> に、一つのファイル
  にまとめた HTML ファイルは <http://walbran.org/sean/linux/linmodem-
  howto-all.html>, に、ソースの SGML は
  <http://walbran.org/sean/linux/linmodem-howto.sgml> にあります。

  このドキュメントの古いバージョンは巨大で扱いにくいため、書き直しが必要
  に見えます。この情報のトータルロスを避けるために古いバージョンのコピー
  は <http://walbran.org/sean/linux/linmodem-howto-old.html> にありま
  す。

  あなたは、ここに記載されていないけど動作する Linmodem を持ってますか？
  ドライバを開発していますか？このドキュメントのどこかが不正確、またはま
  ぎらわしいと思いますか？あなたか他の誰かの成果がここで使われているが、
  適切な謝辞が無いと思いますか？ためらうことなく、訂正と提案を私
  sean(at)walbran.org 宛てに電子メールでお送りください。

  2.  Linmodems

  2.1.  Linmodem とは何か?

  Linmodem は、"winmodem"(「免責」の項参照)の Linux 用の実装です。これら
  のモデムは、伝統的にモデム上のハードウェアによって処理されてきた機能
  を、程度の差はあれ、ソフトウェアに頼って処理しているという意味で、モデ
  ム「未満」であると言えます。この根本的な理由は、もちろんソフトウェアが
  ハードウェアより安価であり、（通常は）ネジ回しを使わなくてもアップグ
  レード/拡張/改良が可能である、ということです。しかし、とにかくモデムが
  機能するには、その人が好むオペレーティングシステムで実行可能なソフト
  ウェアを必要とします。

  2.2.  どの Linmodem ハードウェアがサポートされているか？

  これを書いている時点では、Linux で動作する winmodem はごくわずかです。
  ドライバが存在することが分かっている各チップセットについては、このド
  キュメントの以降にセクションがあり、インストール方法を説明しています。

  2.3.  私の GeeWhiz 9.8.7 モデムやラップトップに、これらのチップセット
  が         あるかどうかは、どうすれば分かりますか？

  【訳注：GeeWhiz 9.8.7 というのは架空の商品名です。gee whiz は、ウ
  ワー、ヒエー、おやまあ、おいおい、といった感嘆・驚きを意味することばで
  す】

  2.3.1.  システムからの情報

  インストールされているハードウェアに関する情報は次のようなコマンドを
  使って得られます：

  o  PCI:  cat /proc/pci  and  lspci

  o  ISA:  pnpdump  and  isapnp

  o  Internal PCMCIA:  cardctl ident

  o  General:  dmesg | more  and  cat /proc/interrupts

  MarvS は「Windows のデバイスマネージャは同様の情報を提供するが、メーカ
  は単にそのブランド名をビルトイン・モデムに付けることが多いので、この情
  報はあなたが期待するほどには役に立たないかもしれない (例えば、"Compaq
  Internal 56k" モデムって、どんなチップセットが入っているのだろう?)」と
  指摘しています。 MS Windows に実装されているダイアルアップネットワーク
  のメニューのチェックボックスオプションで、モデムのログを作ることにより
  追加の情報を得られることがあります。作成されるファイル
  は、C:\WINDOWS\MODEM.LOGです。これにはモデムの初期化文字列と、他の有用
  な情報も入ったモデム設定ファイルの名前がたぶんあるでしょう。

  2.3.2.  モデムの名前とID 番号

  モデムの正確な名前がわかれば、 Rob Clark のサイト
  <http://www.kcdata.com/~gromitkc/winmodem.html> の database
  <http://www.o2.net/~gromitkc/winmodem.html#Database> にある Linux
  Modem Compatibility で検索することができます。 (この Web ページで表示
  される)一覧表の左側のカラー/文字コードは、そのモデムが Linux で動作す
  るかどうかを示します。コード "LM" は Linmodem を意味し、モデムのメモと
  して必要なドライバが書いてあるはずです。"WM" は winmodem であることを
  意味し、サポートが存在することは知られていません。よく似た名前のモデム
  には同じチップセットが入っているだろうとか、全く同じようにふるまうだろ
  う、と仮定しないように注意してください！あなたの WhizBang LX56 と友人
  の WhizBang GT56 は、完全に異なる内部構造を持つことがあるのです。

  モデムの正確な名前を知らない場合、モデムの識別番号をベースにして検索す
  ることができます：あらゆるモデムには登録番号が印刷されているはずです。
  それは、ボード製作者の名称かもしれないし、あるいは FCC 登録番号かもし
  れません。そのようなモデム・ボード上の ID 番号の例の写真が Rob Clark
  のサイト <http://www.kcdata.com/~gromitkc/winmodem.html> の
  <http://www.kcdata.com/~gromitkc/fcc1.jpg> にあります。これで、チップ
  セット/ドライバ情報を得るために、モデムと FCC ID の一覧表
  <http://www.o2.net/~gromitkc/winmodem.html#Database> をウェブ・ブラウ
  ザで検索することができます。あるいは  <http://www.fcc.gov/oet/fccid/>
  で直接、米国連邦通信委員会 (FCC) のデータベースを検索することもできま
  す。慎重に説明を読んでください。そして O（文字）を0（数字）と混同した
  り、他のありうる混乱をしないように注意してください。

  2.3.3.  内蔵モデム付きラップトップ

  ラップトップを持っているが中を開けたくないとか、特定のマシンを買うこと
  を検討しているが、ベンダーはあなたに情報やサンプル・ボックスを提供する
  ことに対して十分な思いやりがないなら FCC ID 番号を知ることはできないか
  もしれません。このような場合は、いくつかの選択肢があります：

  o  Kenneth Harker のサイト Linux on Laptops
     <http://www.cs.utexas.edu/users/kharker/linux-laptop/> には、多数の
     ユーザが作成した個々のラップトップ・モデルでの Linux の経験を記述し
     たサイトのインデックスがあります。

  o  Werner Heuser の Mobilix: Linux Modems
     <http://mobilix.org/modem_linux.html> と Mobilix: Linux Mini-PCI
     <http://mobilix.org/minipci_linux.html> のページに、モデムと NIC を
     内蔵したラップトップの仕様の一覧表があります。また、ここにリスト
     アップされていないモデルの情報を得るための、役に立つ助言もありま
     す。

  o  コンピュータメーカのマニュアル、ウェブサイト、または（ひゃあ!）テク
     ニカルサポート

  o  <http://www.google.com>

  3.  一般的な設定とカーネルモジュールの問題

  3.1.  カーネルモジュールのサポート

  ここでリストアップされているドライバは、全てカーネル・モジュールとして
  リリースされています。従って、あなたはモジュールをサポートするカーネル
  を持っていることが確実でなければなりません。加えて以下で更に述べるよう
  に、カーネルとバージョンが一致しないモジュールの使用を援助するために
  「モジュール・バージョン」のサポートを可能にする必要があります。合理的
  に、最近の Linux ディストリビューションからカーネルを使うのであれば、
  たぶんモジュール・サポートはすでに可能になっています。カーネルをコンパ
  イルするなら Kernel HOWTO <http://www.linuxdoc.org/HOWTO/Kernel-
  HOWTO.html> 【訳注： 日本語訳が JF プロジェクト
  <http://www.linux.or.jp/JF/> にあります。】を通して、モジュールを可能
  にする方法を知っていなければなりません。いずれにせよ、カーネル・コン
  フィギュレーションファイルに以下の設定が存在することを確認するために
  チェックできます。 (これは通常 /usr/src/linux にあります):

  CONFIG_MODULES=y
  CONFIG_MODVERSIONS=y

  3.2.  サウンドのサポート

  これは 2000年10月に新たに確認された問題です。より多くのハードウェア/ソ
  フトウェアの組み合わせにおける情報が集まるまでは、あまり信用しすぎない
  でください。 Marv Stodolsky は、バイナリオンリーの Lucent ドライバ
  (v5.68) を使うときは、カーネルでサウンドのサポートを有効にする必要があ
  る (サウンドモジュールを介してのサポートでも OK) ことに気付きました。
  そうしないと、ltmodem.o ドライバを使うダイアルイン・セッションが、 ppp
  プロトコルの初期化の際にアボート (またはハング) してしまうそうです。全
  てのオーディオをサポートする OSS ソフトウェア (とサウンドを組み込んで
  いないカーネル) の組み合わせでは、 ltmodem.o ドライバーで ppp プロトコ
  ルをサポートできませんでした。これらの「サウンド」絡みの問題が、他の
  Linmodem/オーディオカードの組に対してどのくらい一般的なものなのかは、
  今後明らかにする必要があります。

  3.3.  ISA プラグ・アンド・プレイ

  ISA のプラグ・アンド・プレイのモデムをお持ちなら、たぶんリソースをモデ
  ム・カードに割り当てるために isapnptools を使う必要があります。これに
  は、isapnptools をインストールし、モデム用に /etc/isapnp.conf ファイル
  にエントリーを持つ必要があります。 Plug-and-Play-HOWTO
  <http://www.linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html> 【訳注： 日本
  語訳が JF プロジェクト <http://www.linux.or.jp/JF/> にあります。】を読
  まなければなりませんが、他に心配すべきいかなる ISA デバイスもないな
  ら、するべきことは基本的に以下のとおりです：

  1. 可能なら BIOS を "Non-PNP OS." に設定して下さい。

  2. ルート権限で pnpdump を実行して、現在のシステムのリソースの使用状況
     に基づくプロトタイプの isapnp.conf ファイルを作成します。

  3. この出力からモデムを探し、モデム用に使いたい(または未使用の) IRQ と
     一致する行のコメントを外してください。例えば Sean の Thinkpad i1411
     用 isapnp.conf は以下のようになっています：

     (CONFIGURE ACRd119/1 (LD 0
       (INT 0 (IRQ 11 (MODE +E)))
       (IO 1 (SIZE 8) (BASE 0x0100) (CHECK))
       (NAME "ACRd119/1[0]{LT Win Modem        }")
     # (ACT Y)
     ))

  不思議なことに、少なくともこの場合は #(ACT Y) をコメントアウトしたまま
  にしておく必要がありました。これがあなたの環境で動作しない場合は、他方
  を試してください。

  4. ファイルを /etc/isapnp.conf へコピーしてください

  5. リブートしてください。ブート時のメッセージの途中でこれがうまくいか
     ない場合は、たぶん既に使用中の IRQ/DMA の設定を選んだのでしょう。
     pnpdump の出力にある他の選択肢を試してください (正しいフラグ付きで
     isapnp を実行すれば、たぶんリブートする必要はないでしょう。但し、こ
     こでは初心者にとって最も簡単なのは単にリブートすることです)。

  3.4.  PCI モデム

  PCI モデムについて cat /proc/pci で得られることより多くの情報が欲しい
  ときは、pciutils ソフトウェアパッケージ内の scanpci と lspci のような
  ユーティリティが役に立ちます。
  【訳注】 以下に私の環境で /proc/pci, scanpci, lspci の各コマンドを実行
  した結果(モデムに関する部分のみ)を示します。

  # cat /proc/pci の場合

    Bus  0, device   9, function  0:
      Communication controller: Lucent (ex-AT&T) Microelectronics Unknown device (rev 1).
        Vendor id=11c1. Device id=442.
        Medium devsel.  Fast back-to-back capable.  IRQ 3.  Master Capable.  No bursts.  Min Gnt=252.Max
  Lat=14.
        Non-prefetchable 32 bit memory at 0xefffbf00 [0xefffbf00].
        I/O at 0xde00 [0xde01].
        I/O at 0xdc00 [0xdc01].

  # scanpci -v の場合

  pci bus 0x0 cardnum 0x09 function 0x0000: vendor 0x11c1 device 0x0442
   Device unknown
   CardVendor 0x13e0 card 0x0412
    STATUS    0x0290  COMMAND 0x0107
    CLASS     0x07 0x80 0x00  REVISION 0x01
    BASE0     0xefffbf00  addr 0xefffbf00  MEM
    BASE1     0x0000de01  addr 0x0000de00  I/O
    BASE2     0x0000dc01  addr 0x0000dc00  I/O
    MAX_LAT   0x0e  MIN_GNT 0xfc  INT_PIN 0x01  INT_LINE 0x03
    BYTE_0    0xff  BYTE_1  0xff  BYTE_2  0xff  BYTE_3  0xff

  $ man lspci でコマンドの使い方が表示されます。
  # /sbin/lspci -v の場合

  00:09.0 Communication controller: Lucent Microelectronics 56k WinModem (rev 01)
          Subsystem: GVC Corporation LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
          Flags: bus master, medium devsel, latency 0, IRQ 3
          Memory at efffbf00 (32-bit, non-prefetchable)
          I/O ports at de00
          I/O ports at dc00
          Capabilities: [f8] Power Management version 2

  【訳注終わり】

  3.5.  モジュール・ツール

  以下のコマンドは、モジュールを取り扱う際に役に立ちます。多くは root 権
  限を必要とします。これらのコマンドの詳細はマニュアルページ をご覧下さ
  い (例えば man insmod)。

  3.5.1.  insmod -f

  バージョンが一致するカーネル・モジュールは、"insmod モジュール名" コマ
  ンドを使って挿入されます。モジュールが現在のものとは異なるカーネルの下
  でコンパイルされている場合、insmod はバージョンが一致しないことを報告
  し、モジュールのロードは失敗するでしょう。 "insmod -f モジュール名" と
  して、強制フラグ (-f) をつけて、バージョンの不一致にかかわらず、モ
  ジュールをロードすることもできます。モジュールが使うカーネル・インタ
  フェースが、本当にカーネル・バージョンで変わらないなら、このようにモ
  ジュールを強制的にロードしてモジュールを動作させることができます。

  このことは、例えば ESS モデム・モジュールである esscom.o などにも当て
  はまります。このドライバが 2.2.12 でコンパイルされたとしてみましょう。
  これは 2.2.12 以降のカーネルにも強制的に挿入でき、程度の大小はあります
  が、 2.2.14 までのカーネルでなら何も変更しなくても機能します。 2.2.15
  以降になると、以下で述べる tty.h へのパッチが必要になります。しか
  し、2.4.0-testX のソースからコンパイルされたカーネルに対しては、大きな
  変更がされているため、強制的な挿入を行うことすらできません。

  3.5.2.  modprobe

  コマンド modprobe modulename は、モジュールを挿入しそのモジュール(以下
  で説明する depmod で決定される)で必要とする全てのモジュールです。

  3.5.3.  rmmod

  モジュールを使用した後、コマンド rmmod でアンロード(カーネルから取り除
  く)できます。

  3.5.4.  depmod

  depmod コマンドは、モジュールの依存関係を解析します。コンパイル済みモ
  ジュールと実行中のカーネルの互換性は、以下のようなコマンドでチェックで
  きます。

     depmod -e ltmodem.o

  カーネル 2.2.12 でコンパイルされた ltmodem.o と実行中のカーネル 2.2.17
  の特定の場合、返ってくる情報には以下のようなものが含まれます。

  o  depmod: *** Unresolved symbols in ltmodem.o

  o  depmod:        bh_mask

  o  depmod:        schedule_timeout

  o  depmod:        request_region

  o  depmod:        pcibios_read_co

  o  and many others.

     unresolved symbols (未解決のシンボル)でモジュールを使用することは、
     以下に述べるように危険なことです。

  4.  異なるカーネルバージョンでコンパイルされているモジュールのための
  Tips とトリック

  このドキュメントを書いている時点で、ソースコードが入手できるのは
  Ambient Technology ドライバと Lucent LT モデム用の部分的なソースだけで
  す。一般的にモジュール/バイナリは、それらがコンパイルされたバージョン
  のカーネルのときだけ、素直に動作します。従ってコンパイル済みの
  linmodem ドライバを特定のカーネルで動くようにするということは難問で
  す。

  Linux カーネルは動的に変化する獣なので、ほとんどのモデムとチップのベン
  ダーが依然として彼らのドライバのソースコード・バージョン(これは改良さ
  れた Linux カーネルを使うために、これらのドライバを修正し再コンパイル
  する能力を保証します)をリリースするほうを選ばないことは非常に残念で
  す。以下に述べるように色々なトリックを使って、少し新しいカーネル・バー
  ジョンで動作するようになだめたバイナリ・モジュールがいくつかあります。
  しかし、モジュールが動作するとしても、それは最小限で使用するのが賢明で
  す。 Mark Spieth からの Eメールを引用します。

  「unresolved symbols(未解決のシンボル)があると、ドライバが適切に動作す
  ることはあり得ません。未解決シンボルは、何かが動作しないということを意
  味しているからです。さらにこれは、本来呼ばれるべきものの代わりに、カー
  ネル内部にある別の何かが呼ばれてしまうことを意味しており、実際になにが
  呼ばれるのかはわからないのです。これはたいへん良くないことです」

  ですから、異なるバージョンのカーネルでのバイナリモジュールの使用は相当
  慎重にするべきであり、自分自身の責任で行って下さい。モデム機能の全てが
  必要ならモジュールに適合するカーネルにダウングレードすることを考慮して
  下さい。これは決してばかげた期待ではありません。しかし、これらのワーニ
  ングにもかかわらず、他の多くは以下のようなトリックとツールを使って、さ
  さいな不快感(時々起きるカーネルパニックのような)のみで不一致のバイナリ
  モジュールとカーネルを使用しています。

  4.1.  Fixscripting

  Mark Spieth は、進歩的に改良された "fixscripts" のシリーズに貢献してい
  ます。これは、バイナリ・モジュールを編集するスクリプトで、バージョン不
  一致のワーニングを出ないようにします。これは、強制フラグなしで(つまり
  単に "insmod モジュール名" とするだけで) "fix された" モジュールを挿入
  できます。新しいバージョンでは、モジュールシンボルをカーネルによってエ
  クスポートされたものに適合するようにリネームもするので、depmod -e でテ
  ストしても "Unresolved symbols" のエラーは出ません。ただし、この変更は
  単なる隠蔽にすぎないことは強調しておく必要があるでしょう。このモジュー
  ルは最小限の使用に留めておくことを推奨します。

  fixscript を使うには、例えばバイナリの Lucent モジュール ltmodem.o の
  場合 /root/modem のような作業用ディレクトリを作ります。
  <http://www.test.dclabs.com.au/linmodem/fixscript> から最新の
  fixscript を入手して下さい。 fixscript というファイル名でセーブして下
  さい。そのファイルを less コマンドまたはお好みのエディタで、DOS の改行
  コードが偶然に入り込んでいないかチェックして下さい。それらはビューア／
  エディタに応じて、ボールド(太字)の M, 下線付きの M, ^M のように表示さ
  れます。注意：ビューアの moreでは、これらの DOS の改行文字は表示されま
  せん。

  chmod +x fixscript で、ファイルを実行可能にします。 "fix された"モ
  ジュールを次のようにして作ります。

      ./fixscript ltmodem.o ltmodem2217.o

  下記のようにモジュールの依存性をテストするとエラーは出ないはずです。

      depmod -e ltmodem2217.o

  そして強制することなくシンプルなコマンドで挿入に成功するはずです。

      insmod ltmodem2217.o

  いくつかの PCTel モジュールで提供されている「ソースコード」(小さな C
  のファイル)は、コンパイルされてそのパッケージ内のバイナリライブラリと
  リンクされると、同様の仮装をします。部分的オープンソースの Lucent ドラ
  イバとは異なり、これはカーネルインタフェースを実際に変更することを補償
  するものでは ありません。

  4.2.  tty.h  のパッチ

  Mark Spieth は、バイナリのみの Lucent LT モデムドライバ (version 5.68)
  を、オリジナルのまま 2.2.14 以降のカーネルで動作させる方法を探るうち、
  Linux カーネルソースをちょっと変更すれば、カーネルバージョン 2.2.14 か
  ら 2.2.16 間で生じる非互換性の主要な部分が解決できることに気がつきまし
  た。このパッチは、部分的なソース／バイナリ Lucent ドライバ (version
  5.78)を使用する場合は不要ですが、2.2.15 以前のカーネルでコンパイルされ
  たドライバの他のモデムでは、まだ役に立ちます。

  パッチをあてた 2.2.17 tty.h とこのパッチでコンパイルされたいくつかの
  2.2.17 カーネルパッケージは、
  <http://walbran.org/sean/linux/stodolsk/>から入手できます。自分で編集
  したいなら、変更する行は、include/linux/tty.h の中の tty_struct 構造体
  の中にあります。これは新しいカーネルでは、特別なメンバ poll_wait があ
  ります。このメンバを構造体の最後に移動すると、残りのオフセットが
  2.2.15 以前のバージョンのものと同じようになり、コンパイル済みのカーネ
  ルモジュールと互換性を持つようになります。ソースにこの変更をしたあと、
  カーネルとモジュールを再コンパイルする必要があります。

  4.3.  カーネル 2.2.14 から ppp.o  を使う

  2.2.15 以降のカーネルでバイナリモジュールを使うためのトリックが存在し
  ます。これはカーネルを再コンパイルをする必要がありません。しかし、上で
  述べた tty.h パッチの発見に従えば、このトリックは必要ではなく、またお
  勧めしません。トリックは、/lib/modules/net/ppp.o モジュールをカーネル
  2.2.14 のものと置き換えます。Christoph Hebeisen (cth(at)sfu.ca) は、
  バージョン 2.2.16 ではなく ppp.o バージョン 2.2.14 で Lucent モジュー
  ルを使用すると、2.2.16 カーネルの下での機能を提供すると報告していま
  す。 Willie Green (willjr(at)lcc.net) は、このトリックが ESS モジュー
  ルでも働くことを確認しています。バージョンが一致するモジュールをサポー
  トする単純な挿入：

      insmod slhc

  をしてから、2.2.14 ソースからの一致しない ppp.o を挿入します。

      insmod -f ppp.o

  強制的な挿入での、このトリックは上で述べた簡単でより効果的なカーネル
  ソースファイル tty.h の変更よりも安定ではないことを強調したいと思いま
  す。

  5.  特定のチップセットと、そのドライバ

  5.1.  Lucent LT

  5.1.1.  概要

  このモデムは Linux では最も多くサポートされていて、3つの異なるドライバ
  パッケージが存在します。

  o  メーカがサポートしない、半バイナリ／半オープンソースのカーネルモ
     ジュールがあります。もとは Red Hat 6.2 の 2.2.14-5 カーネル用に設計
     されています。これはドライバ version 5.78 で、使用することが最も成
     功しそうなドライバです。

  o  メーカがサポートしない、バイナリのみのカーネルモジュールで Red Hat
     6.0 の 2.2.12-20 カーネルでコンパイルされたものがあります。これはド
     ライバ version 5.68 です。

  o  Linux モデムで使用するオープンソースのツールが <http://www.close.u-
     net.com/ltmodem.html> にあります。 Pavel Machek は、「これは、それ
     ほど便利ではない：しかし、これはハードウェアドライバであり、v.34 プ
     ロトコルスタックは無く、 ISP に接続することはできない。しか
     し、Lucent winmodem を応答器にするは充分である」と書いています。

     ("linux568.zip" の)バイナリのみのドライバモジュールは、GPL の Linux
     serial.c ドライバからのコードを含んでいることに注意する必要がありま
     す。従って、モデムドライバのソースコードは利用できないのでこのドラ
     イバの売買は明らかに GPL に違反します。部分的にオープンソースのドラ
     イバ("i56lvp578.zip")の配布は技術的に合法かもしれないし、そうでない
     かもしれません。GPL のコードがクローズなソースコードにまだリンクさ
     れていないけれど、確かにそのようにするつもりだからです。詳しくは、
     この Kernel Traffic の問題点 <http://kt.linuxcare.com/kernel-
     traffic/kt20000717_76_print.epl#1> と Linux-Kernel メーリングリスト
     の 2000年12月3日の週を含むアーカイブをご覧下さい。

  5.1.2.  メーカ製のドライバ version 5.78 - インストール

  インストールのソース部分は、モジュールを使用するバージョンのカーネルに
  依存します。オリジナルのコードは Red Hat 6.2 のカーネル 2.2.14-5.0 で
  使用するように設計されています。

  1. <http://walbran.org/sean/linux/stodolsk/> から、あなたのカーネル用
     のパッケージを入手して下さい。(2.4 用のカーネルは、そこで説明されて
     いるように必要なパッチをあてること)

  2. パッケージを展開します。

  3. make と入力して ltmodem.o モジュールを作成します。

  4. su と入力して(要求されたらパスワードを入力してください) root ユーザ
     に変更します。

  5. ./ltinst2 (推奨) または ./ltinst (オリジナル) と入力してモジュール
     をインストールしてください。

     これでモデムは /dev/modem または /dev/ttyLT0 (推奨) または
     /dev/ttyS14 (後方互換)としてアクセス可能なはずです。

  5.1.3.  メーカ製のドライバ version 5.68 - インストール

  このドライバは、version 5.78 に置き換えられました。しかし、特殊なケー
  スではまだ使いみちがあります。

  1. あなたのカーネル用のパッケージを入手して下さい。

     a. 2.2.12 から 2.2.15  <http://linmodems.org/linux568.zip>

     b. 2.2.15 と、それ以上：同じURL、しかし "tty.h"パッチが必要です。前
        述の「異なるカーネルバージョンでコンパイルされているモジュールの
        ための Tips とトリック」の項をご覧下さい。

  2. unzip linux568.zip

  3. su (要求されたらパスワードを入力してください)

  4. ./ltinst (インストールスクリプト内の欠陥のため

     これでモデムは /dev/modem または /dev/ttyS14 としてアクセス可能なは
     ずです。

  5.1.4.  オープンソースのツール - インストール

  手順はソースのドキュメントをご覧ください。

  5.2.  ESS

  5.2.1.  概要

  ES56T-PI (PCI) と ES56V-I (ISA)用に RedHat 6.0 カーネル 2.2.12-20 でコ
  ンパイルされたバイナリドライバがあります。カーネル 2.2.15 までは強制挿
  入によって使用され、 2.2.17 までは「異なるカーネルバージョンでコンパイ
  ルされているモジュールのための Tips とトリック」の項で述べた "tty.h"の
  パッチを使うことにより動作しています。

  5.2.2.  インストール

  1. あなたのモデム用のパッケージを入手して下さい。

     o  ISA: <ftp://ftp.esstech.com/pub/modem/isa/unsupported/56v-
        i/linux/kernel61/linux111.zip> または、

     o  PCI:  <ftp://ftp.esstech.com/pub/modem/pci/unsupported/56t-
        pi/linux/Kernel61/111.zip>

  2. カーネル 2.2.15 と、それ以降の場合は tty.h パッチをあてて下さい。 (
     前述の「異なるカーネルバージョンでコンパイルされているモジュールの
     ための Tips とトリック」の項をご覧下さい) カーネルとモジュールを再
     コンパイルして下さい。

  3. パッケージを展開する: unzip パッケージ名

  4. root ユーザに変更: su (要求されたらパスワードを入力する)

  5. デバイスファイルを作成する： mknod /dev/esscom c 127 1

  6. 便利なデバイスを作成する： ln -s /dev/esscom /dev/modem

  7. 便利なデバイスを作成する： ln -s /dev/esscom /dev/ttyS15

  8. デバイスの所有権をセットする： chgrp uucp /dev/esscom

  9. デバイスのパーミッションをセットする： chmod 666 /dev/esscom

  10.
     モジュールバージョンを仮装する (「異なるカーネルバージョンでコンパ
     イルされているモジュールのための Tips とトリック」の項参照)：
     ./fixscript essmodem.o essmodem.fix.o

  11.
     モジュールファイルをインストールする： cp essmodem.fix.o
     /lib/modules/`uname -r`/misc/essmodem.o

  12.
     カーネルにモジュールを挿入する： insmod -f essmodem

  13.
     (オプション)自動モジュールローディング： /etc/modules.conf または
     /etc/conf.modules ファイルに "alias char-major-127 essmodem"という
     行を追加する。

  5.3.  PCTel

  5.3.1.  概要

  バイナリドライバが下記にあります。
  <http://www.kcdata.com/~gromitkc/winmodem.html#drivers>

  カーネル 2.2.16 用の Debian 型式のインストールパッケージが Corel
  <ftp://ftp.corel.com/pub/linux/CorelLinux/dists/corellinux-1.2/corel/binary-
  i386/utils/pctel-kernel-2.2.16-driver-cdl-v1.0_1.0.deb> から入手できま
  す。Debian パッケージ (.deb) は、"alien" というツールを使って (
  <http://www.kitenet.net/programs/alien/> 他のパッケージのフォーマッ
  ト(RPM または .tar.gz)に変換できます。

  5.3.2.  インストール

  PCTel モジュールパッケージには、明らかに 2つの型式があります。

  1. 2つのモジュールファイル pctel_hsp.o と pctel_pci.o を
     /lib/modules/2.2.16 にインストールパッケージ (rpm または deb)

     このパッケージで、2.2.16 より新しいカーネルを実行しているなら、強制
     挿入 (insmod -f)を使う必要があり、成功しなかった場合は、前述の
     Lucent 5.68 と ESS モジュールで使用した "fixscript" の方法を試すこ
     とができます。しかし、これは私が知る限りではまだ試されていませ
     ん。2.2.16 より古いカーネルを実行しているなら、カーネルをアップグ
     レードするか、または fixscript (これも動作することが保証されている
     わけではありません)を試すことを検討するべきでしょう。もし、これらで
     動作したなら私に報告して下さい。

  2. 展開するとライブラリのセット(hsp.a その他)と、lib/ および
     src/module/ のようなディレクトリの中に小さな C 言語のソースファイル
     (ptmodule.c) があるパッケージ。ディレクトリが無い場合は、以下のよう
     にそれを作成しファイルを配置して下さい。

     mkdir lib
     mkdir src
     mkdir src/module
     mv *.a lib/
     mv Makefile *.c src/module

  そして、src/module ディレクトリに移動し make と入力します。これは lib
  ディレクトリ内にバックアップとして pctel.o モジュールファイルを作成す
  るはずです。(ドライバモジュールは、 src/module の中の ptmodule.oではあ
  りません！)

  この方法で作成されるモジュールの外見上のバージョンは、あなたの現在の
  カーネルバージョンと一致します。

  できたモジュールで、以下のようにしてインストールを進めて下さい：

  1. root ユーザに変更: su (要求されたらパスワードを入力する)

  2. デバイスファイルを作成する： mknod /dev/pctel c 62 79

  3. 便利なデバイスを作成する： ln -s /dev/pctel /dev/modem

  4. 便利なデバイスを作成する： ln -s /dev/pctel /dev/ttyS15

  5. デバイスの所有権をセットする： chgrp uucp /dev/pctel

  6. デバイスのパーミッションをセットする： chmod 666 /dev/pctel

  7. モジュールファイルをインストールする(パッケージタイプ2の場合のみ)：
     cp pctel.o /lib/modules/`uname -r`/misc/

  8. カーネルにモジュールを挿入する：insmod -f modulename

  5.4.  Conexant/Rockwell HSF

  <http://www.olitec.com/pci56kv2.html> にドライバがあります。これは最近
  (2000年9月) Denis Havlik (denis(at)mandrakesoft.com によって「発見」さ
  れました。このページはフランス語ですが、このページにあるインストールコ
  マンドはボールド(太字)体の赤い文字で書かれています。要約すると、パッ
  ケージをダウンロードし、それを tar -zxvf で展開し、インストールスクリ
  プト ins_all を実行します。

  しかし、これは、おそらく動作しないでしょう。これで成功したのはごくわず
  かの人です。

  このドライバに関して既に分かっていることは以下の通りです。

  o  これは RedHat 6.2 kernel 2.2.14-5.0 に対してコンパイルされていま
     す。従って2.2.15 以降のカーネルを使うには少なくとも tty.h のパッチ
     が必要です（前述の「異なるカーネルバージョンでコンパイルされている
     モジュールのための Tips とトリック」の項参照）。

  o  これはフランスの電話システム用にチューニングされています。 Mark
     Allen は他の電話システム用の .inf ファイルを linmodems メーリングリ
     ストここ <http://linmodems.org/cgi-bin/ezmlm-
     cgi?1:msp:1773:nlifphijcfgckncagkpa> にポストしています。他のものに
     は、lin_hsf.inf ファイルを修正してみたもの、または Windows 用のイン
     ストールから .inf からファイル(の全部、または一部)をコピーしたもの
     があります。フランスとオーストラリアからはモデムが完璧に動作したと
     の報告があり、ごくわずかの他の国(スペイン, ...?)では、いくぶん成功
     したとの報告があります。

  o  モデムデバイスファイルは、メジャー番号をデフォルトで使用している
     254 の代わりに 253 で作成する必要があります。

  o  モデム初期化文字列は重要です。フランスのサイトは AT&FW2 を推奨して
     います。オーストラリアの John Torriero は、ここ
     <http://linmodems.org/cgi-bin/ezmlm-
     cgi?1:mss:1845:200010:dpcpaphnkjmehcpaebcp> で述べているように、ほ
     んの少しだけ修正した .inf ファイルと拡張した初期化文字列で成功しま
     した。

     要するに、このドライバはまだ完全には調査されていないのです。これ以
     上の議論と情報は、 <http://linmodems.org> でメーリングリストのアー
     カイブをチェックして下さい。特に このスレッド
     <http://linmodems.org/cgi-bin/ezmlm-
     cgi?1:sss:1892:200010:nlifphijcfgckncagkpa> です。あなたがこのモデ
     ムを動作させることに成功したなら、私はあなたがどのようにしたのかを
     聞くことに大変興味を持っています。

  5.5.  Intel (もとは Ambient Technology, もとは Cirrus Logic)

  Mikhail Moreyra は、CL-MD5620DT チップセット用の GPL のドライバを書き
  ました。これは最高 33.6kbps まで可能です。しかし、これはアルファ版のソ
  フトウェアであり、注意深く扱う必要があります。ドライバは
  <http://linmodems.org/CLModem-0.3.0.tar.gz> から入手できます。つい最
  近、Gabriel Gambetta (ggambett(at)internet.com.uy)は、このドライバに
  パッチをあてて標準 AT コマンドが使えるようにしたバージョンを出しまし
  た。このバージョンは、 Rob Clarkのサイト (ここ)
  <http://www.o2.net/~gromitkc/clm/CLModem-0.3.0+gg.tar.gz>から入手でき
  ます。

  5.6.  3Com Mini-PCI

  request for comments が、3Com から公式に Linmodems.org メーリングリス
  トのここ <http://linmodems.org/cgi-bin/ezmlm-
  cgi?1:msp:1229:cilpipdmolabpbbbibgd> にポストされました。 3Com 製の
  miniPCI combination NIC/winmodem 用のバイナリのみのドライバが供給可能
  とのことです。応答は、指定されたアドレス linmodem@new-n-used.com に返
  して下さい。メーリングリストではありません。私が知る限り、ドライバはま
  だリリースされていませんが Werner Heuser の miniPCI page
  <http://mobilix.org/minipci_linux.html> には多くの情報とリンクがありま
  す。

  6.  トラブルシューティング

  このドキュメントと、 Modem-HOWTO <http://www.linuxdoc.org/HOWTO/Modem-
  HOWTO.html> と PPP Howto <http://www.linuxdoc.org/HOWTO/PPP-
  HOWTO/index.html> を通読して、あなたのモデムが利用可能なドライバの一つ
  に適合することをかなり確信しているのに、それはまだ動作しませんか？問題
  を克服するための過程には、たくさんのポイントがあります。

  一般的に Linux は、トラブルシューティングの問題で非常に役に立つネット
  ワーク接続の記録を保持しています。それらの特定のファイル名は、Linux
  ディストリビューションとダイアルイン・ソフトウェアの両方によって変化し
  ますが、 /var/log/messages, /var/log/syslog, などのシステムログファイ
  ルは少なくとも何らかの情報を提供します。

  下記の情報を集めると、それはあなた自身のトラブルシューティングとメーリ
  ングリストに助けを乞う問合せの両方のために役に立つでしょう。 root 権限
  でモデム・インストール・スクリプトが存在するディレクトリに移ってスクリ
  プトの記録を始めてください。このスクリプトが "exit" で終了したあと、そ
  れを Linux パーティションからあなたを援助するかもしれないメーリングリ
  ストに送信するためにコピーして下さい。

  (下記の # は説明に役立つコメントです)

  # 記録を開始する
  script ModemTest.txt

  # お持ちのモデムカードの情報をなるべく多く入力する
  # echo winmodem の名前, メーカ, 名称, 可能ならチップ名
  #【訳注】可能ならモデム基板の裏側のラベルに書いてある FCC REG No. も
  #        書き加えるとよいでしょう。例えば以下のようにします。
  echo "GVC PCI MODEM, F-1156IV/A2A, LUCENT chip (1646T, 1034AH-J)"
  echo "FCC REG No.: DK4TAI-25249-M5-E"

  # 現在のカーネルバージョン
  uname -r

  # これはシリアルポートの情報を表示します
  setserial -agv /dev/ttyS*

  # 割り込み(IRQ)の情報
  cat /proc/interrupts

  # モジュール・インストール・スクリプトの内容を表示(スクリプト名を挿入)します。
  cat ScriptName
  # 【訳注】ScriptName は、実際には例えば LUCENT のドライバなら ltinst,
  # ESS のドライバは mdminstall, CONEXANT(Rockwell) のドライバは ins_all です。
  # インストール・スクリプトが無いドライバもあります。

  # スクリプトが実行可能かチェックします：
  ls -l ScriptName

  # 下記のように "x" があれば応答は OK :
  # -rwxrw-rw-  1 root     root  654 Jan  6  2000 ltinst
  # そうでなければ、それを実行可能にします：
  chmod o+x ScriptName

  # 確認します
  ls -l ScriptName

  # ScriptName がうまくいかなかったら、このカーネルで実行する前に
  # これで実行してください：
  ./ScriptName

  # /dev/modem にセットされているシンボリックリンクは何か：
  ls -l /dev/modem

  # ScriptName で指定されている DeviceName は何か (/dev/ttyS14 または ...?)：
  echo DeviceName

  # モデムドライバの名前は？ DriverName.o のように
  # ".o" がついているのはコンパイル済みのバイナリです。
  echo This is my DriverName.o

  # モジュール・パスに挿入したのなら
  # 次のように、それがそこに表示されるか試します：
  find /lib/modules | grep DriverName

  # DriverName が、動作中のカーネルにインストールされているモジュール群
  # の中に含まれていますか？
  lsmod

  # だめなら簡単な挿入を試してみましょう：
  insmod ./DriverName.o

  # または、それがモジュール・パスの中にあるなら、下記で十分です：
  insmod DriverName

  # 挿入をチェックします：
  lsmod

  # 挿入されていなかったら、強制的に試してみます：
  insmod -f ./DriverName

  # もう一度、挿入モジュールを表示します
  lsmod

  # DriverName がリストされない場合、モデム・ハードウェア、ドライバ、カーネル
  # の間に互換性がありません。それ以上努力しても無駄なだけです。
  # DriverName がリストされるなら、もう少し多くの情報を集めましょう。
  # 最初に、Linux インストール用のダイアルイン接続の設定に使われる
  # 設定ユーティリティを再実行したいかもしれません。
  # 後でこの記録からあなたのパスワードを編集することを忘れないでください。
  # 準備しておかなければならない以下の情報について、多分たずねられるでしょう：
  # 使用するポート(/dev/modem または /dev/ttySn)、ダイアル番号、ユーザ名、
  # パスワード。
  # 設定ユーティリティを実行します。
  YourSetUpConf

  # 記録をやめる
  exit

  ダイアルインが成功しないなら、ログ・ファイルからこの記録を追加してくだ
  さい。例として Debian Linux システムの /var/log/syslog/ のセクションを
  以下に示します。

  【訳注】このドキュメントの以前のバージョンでは、ここに
  /var/log/syslog/ の抜粋があったのですが、なぜかこのバージョンにはあり
  ません(?)。

  7.  FAQ

  7.1.  私は winmodem を持っていますが Linux で動くでしょうか？

  たぶんだめでしょう。前記の「どの Linmodem ハードウェアがサポートされて
  いますか？」のセクションをご覧ください。そして Linux モデムの互換性
  (Linux Modem Compatibility)について Rob Clark のサイト
  <http://www.kcdata.com/~gromitkc/winmodem.html> の database
  <http://www.o2.net/~gromitkc/winmodem.html#Database> をチェックしてく
  ださい。

  7.2.  "device or resource busy" というエラーがでました。

  o  ISA モデムをお持ちの場合は、IRQ と DMA のリソースを割り当てるための
     isapnptools を使用しましたか？ 詳しくは前述の "ISA プラグ・アンド・
     プレイ" をご覧ください。

  o  あなたが作成したデバイスファイルは正しいか、念入りにチェックし、
     IRQ のコンフリクト(衝突)がなくなるようにしてください。全てうまく
     いっているように見えるのに動かない場合は、 Linmodems.org
     <http://Linmodems.org> メーリングリストで、誰か別の人が同じ問題を
     持っていないか(そして解決済みでないか)をチェックしてください。また
     は、自分自身で解決して、その結果を他の人に知らせるように試みてくだ
     さい。

  7.3.  fixscript または insmod で "unresolved symbols" になりました。

  Unresolved symbol は、バージョン不一致の本物の脅威です。そして一般的に
  は悪いことにバイナリモジュールではほとんど避けられません。 fixscript
  が unresolved symbol と報告する場合、または unresolved symbol にもかか
  わらずモジュールが動作しないなら、そのカーネルとモジュールの組み合わせ
  は運が悪いのでしょう。しかし、以下のようなシンボルが含まれる、いくつか
  の共通なケースもあります。

  o  slhc_xxxx: たぶん modem や ppp モジュールを挿入する前に slhc モ
     ジュールを insmod する必要があるでしょう。

  o  printk, jiffies:  あなたのカーネルは、たぶん SMP を enable にしてコ
     ンパイルされているのでしょう。どのバイナリモジュールも SMP-safe で
     あることは分かっていません。そして、たぶんシングルプロセッサ・マシ
     ン上のシングルプロセッサ・カーネル(つまり、SMP が disable になって
     いる)でのみ動作するでしょう。カーネルの再コンパイルを試すか、そうで
     なければ SMP が disable のバージョンを入手するべきです。 (ありがと
     う Tom Reinertson (treinertson(at)uswest.net))

  o  tty_xxxx と esscom.o: 初期の fixscript は、このモジュール内のバー
     ジョン固有のシンボルを扱うことができませんでした。新しいバージョン
     は、 <http://www.test.dclabs.com.au/linmodem/fixscript> で入手でき
     ます。これは、このモジュールを fix できるはずです。

     モジュールの動作が不安定な場合、ある条件下ではそれらのシンボルにた
     またま当たらないでいる一方、別の条件下ではそれらにぶつかってしまう
     のでしょう。同じような状況で異なる関数のセットをコールする別の ppp
     ダイアルアッププログラム (wvdial, kppp) を試してみてください。ま
     た、LUCENT モジュール用に設計された fixscript も、あなたのモジュー
     ルで使用されているシンボルを "fix" していない可能性があります。動作
     する組み合わせが見つからない場合は、モジュールにより密接にバージョ
     ンがマッチするカーネルの「ダウンロード」を検討してください。

  7.4.  PCTel のモデムが動作しません。

  o  モジュールにカントリーコード・パラメータを与える必要がありますか？
     付録をご覧ください。

  o  適切なドライバモジュールを使用していますか？ PCTel ドライバは何種類
     か存在します(前述の "どの Linmodem ハードウェアがサポートされている
     か？" をご覧ください)。他のどれかを試してみるとよいかもしれません。

  7.5.  モデムがダイヤルして接続できますが、コネクションが落ちます。

  これは、よく寄せられる問題ですが解決策は少しあるか、またはありません。

  1. これは、モジュールは正常にインストールされていて動作しますが ppp の
     設定に問題があるのでしょう。特に、ログに"peer is not authorized" と
     いうエラーがあるなら、/etc/ppp/options の中の "auth" を "noauth" に
     変更し、かつ／または、"auth" と "lock" をコメントに (行の先頭に '#'
     を書く)してみて下さい。Corel には、これに関する FAQ があります。
     <http://linux.corel.com/support/html/9314.htm>

  2. あるカーネル／モジュールの不一致で、同じモジュールとハードウェアで
     wvdial ではこのエラーが出ないが、kppp のようなプログラムではこのエ
     ラーが出るという報告があります。他の ppp ダイアラを試してみるとよい
     かもしれません。

  3. 最後に、先に言及したサウンドのサポートとの関係の可能性があります。
     カーネル内のサウンドサポートの有無で、ltmodem.o の機能を比較する
     と、ダイアルインは OK ですが、サウンドサポートが無いカーネルでは
     ppp ができません。

     ほとんどの Linux ディストリビューションは、カーネルに一致したカーネ
     ル・コンフィグレーションファイルをおきます。Debian に関連するディス
     トリビューションの場合、それは下記のファイルです。

       /boot/config-version

  実際的な選択は、下記ですぐに表示することができます。

    grep SOUND /boot/config-version |grep -v not

  2.2.17 バージョン固有の例を示します。

  # grep SOUND  /boot/config-2.2.17 |grep -v not
  CONFIG_SOUND=m
  CONFIG_SOUND_OSS=m
  CONFIG_SOUND_SB=m
  CONFIG_SOUND_MPU401=m
  CONFIG_SOUND_YM3812=m
  CONFIG_SOUND_VMIDI=m
  CONFIG_SOUND_YMPCI=m
  CONFIG_LOWLEVEL_SOUND=y

  CONFIG_SOUND=m または CONFIG_SOUND=yes のどちらでも、カーネルがサウン
  ドを (シンプルなサウンド出力として)サポートしていることを表します。

  これらのヘルプが無いなら、モジュールに密接なカーネルバージョンを使うこ
  とを考えた方が良いかもしれません。さもなければ、 Linmodems.org
  <http://Linmodems.org> のメーリングリストで質問して下さい。

  7.6.  コネクションを閉じるか、ドライバをアンロードするとカーネル・パ
  ニック         が起きます。

  これの解決法は 2 つあります。下記の何れかで動くでしょう。

  o  別の ppp ダイアラ (wvdial, kppp) を試してみる。

  o  モジュールがカーネルの中にとどまる、つまりアンロードされないように
     設定する。

  7.7.  何も動いていないようにみえます。誰に助けを求めればよいでしょう？

  o  あなたのモデムがそのモジュールで本当にサポートされているのか二重
     チェックをしてください。上記の「どの Linmodem ハードウェアがサポー
     トされているのか？」の項をご覧ください。

  o  インストールプロセスのどの時点でだめになるのかを見極めてください。
     その時点で使用されるコマンドの man ページをチェックし、問題の原因を
     突き止めることができるか、見てください。

  全くわからないようであれば、以下の「トラブルシューティング」の項を見て
  ください。そして Linmodems.org <http://linmodems.org> に書いてあるよう
  に完全な情報を添えてメーリングリストにメッセージを送ることを考えてくだ
  さい。

  7.8.  winmodem のドライバは誰が書いたのですか。彼(女)と連絡をとるには
  どうすればよいですか？

  たぶん、メーカの誰かに連絡をとっても、その人はたぶんソースコードをアッ
  プデート/リリース/変更する権限を持たないでしょう。そして、いずれにせ
  よ、その人はたぶんあなたの電子メールに返事を出すことはないでしょう。例
  えば  <http://lwn.net/1999/1209/a/lucent.html> を見てください。

  8.  付録

  8.1.  PCTel モジュールパラメータ： カントリーコード

  下記は、PCTel readme ファイルの一つから引用しました。下記のパラメータ
  でモジュールを挿入することにより、適切なカントリーコードを選択できま
  す。

  insmod pctel.o country_code=7

  ("7"は、以下のリストからあなたの国のコードで置き換える) 正しいシンタッ
  クスを教えてくれた Jonathan Emery に感謝します。

  カントリーコードの設定とレポート

  このドライバは、様々な国の電話網のための正しいカントリーコードを設定し
  たり、どのカントリーコードがセットされているかを報告できるモジュール・
  パラメータがあります。
  カントリーコードの選択と報告のための 2つのバージョンがあります：

  バージョン 1：

    カントリーコードをセットするには：
    "country_sel_rep   sel   7" は、カントリーコードを 7 にセットします。

    現在セットされているカントリーコードを、ドライバにたずねるには：
    "country_sel_rep   rep" は、戻り値として現在のカントリーコードを返します。

  バージョン 2：

    カントリーコードをセットするには：
    "country_sel   7" は、カントリーコードを 7 にセットします。

    現在セットされているカントリーコードをドライバにたずねるには：
    "country_rep" は、戻り値として現在のカントリーコードを返します。

  country_code    country_name

      1           USA
      2           FRANCE
      3           GERMANY
      4           ITALY
      5           SWEDEN
      6           UK
      7           JAPAN
      8           AUSTRALIA
      9           SPAIN
     10           TAIWAN
     11           SINGAPORE
     12           KOREA
     13           SWITZERLAND
     14           NORWAY
     15           NETHERLANDS
     16           BELGIUM
     17           CANADA
     18           IRELAND
     19           PORTUGAL
     20           POLAND
     21           HUNGARY
     22           FINLAND
     23           DENMARK
     24           AUSTRIA
     25           S.AFRICA
     26           CTR21 COUNTRIES
     27           CHINA
     28           MALAYSIA
     29           LUXUMBURG
     30           GREECE
     31           ICELAND
     32           NEW ZEALAND
     33           BRAZIL

  9.  日本語訳について

  翻訳に関するご意見は JF プロジェクト <JF@linux.or.jp> 宛てに連絡してく
  ださい。

  校正：

  o  Tsutomu Kawashima  <kawawa@mail.interq.or.jp>

  o  TAKEI Nobumitsu    <takei@webmasters.gr.jp>

  o  Shintarou Sakai    <s_sakai@mxn.mesh.ne.jp>

  o  Daisuke KATO       <daisuke@terra.dti.ne.jp>

  o  Yuji Senda         <ysenda@pop01.odn.ne.jp>

  o  NAKANO Takeo       <nakano@apm.seikei.ac.jp>

