[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] Panasonic DVD-RAM Drive LF-D100J


永井@知能.九工大です.

表題の DVD-RAM ドライブを Linux からある程度扱えるようにできましたので
そのレポートです.

この DVD-RAM ドライブは,そのままでは Linux において
単なる CD-ROM としてしか使えません.
LUN 0 に対してしか返答せず,その際,自分は CD-ROM であると
答えるためです.

そこでカーネルにパッチをあてる必要があります.

テストは kernel 2.0.33 ,SCSI-IF は APA-1460J (PC カード) にて
行いました ( pcmcia-cs は 2.9.11 です).

今回の方法で利用できたのは,音楽 CD, CD-ROM(CD-R), PD, DVD-RAM です.
その他の DVD-ROM などは所有していないため,テストできません.
ただし,DVD-RAM については,使用できるといっても Win95 との間で
ディスクを共有してデータ交換に使用することはできません (後述).
PD での Win95 との間のデータ交換はテストしていませんが,
過去の実績から見て,できるであろうと思います.

(1) 640MO の場合と同様,2048 byte/sector パッチが必要です.
    http://liniere.gen.u-tokyo.ac.jp/2048.html から入手してください.
    パッチが一部リジェクトされるはずですが,
    無視してもかまわないでしょう.

(2) LF-D100J がうまく扱えないのは,デフォルトでは CD-ROM ドライブと
    なってしまうためですから,カーネルソースの drivers/scsi/scsi.c に
    次のパッチをあて,強引にリムーバブルデバイスとして MO と同じに
    認識させます.このパッチではさらに,これも強引に,同じデバイスの
    同じ LUN ( LUN == 0 ) で,CD-ROM ドライブとしても認識させています.
=======================================================================
--- scsi.c~	Fri May 22 18:31:35 1998
+++ scsi.c	Fri May 22 18:32:22 1998
@@ -534,6 +534,8 @@
   struct Scsi_Device_Template *sdtpnt;
   Scsi_Device * SDtail, *SDpnt=*SDpnt2;
   int bflags, type=-1;
+  static int PANA_DVD_RAM[2] = {-1,-1};
+  int org_lun = lun;
 
   SDtail = scsi_devices;
   if (scsi_devices)
@@ -546,6 +548,16 @@
   SDpnt->lun = lun;
   SDpnt->channel = channel;
 
+  /* MATSUSHITA DVD-RAM LF-D100 */
+  if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && lun == 1) {
+    /* get CD-ROM type */
+    SDpnt->lun = lun = 0;
+  } else {
+    /* clear status */
+    PANA_DVD_RAM[0] = -1;
+    PANA_DVD_RAM[1] = -1;
+  }
+
   /* Some low level driver could use device->type (DB) */
   SDpnt->type = -1;
 
@@ -646,6 +658,21 @@
     scsi_result[1] |= 0x80;     /* removable */
   }
 
+  if (!strncmp (scsi_result + 8, "MATSHITA", 8) &&
+      !strncmp (scsi_result + 16, "PD-2 LF-D100", 12) &&
+      scsi_result[0] == TYPE_ROM) {
+    if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && org_lun == 1) {
+      /* MATSUSHITA DVD-RAM LF-D100 treats as ROM */
+      lun = 1;
+    } else {
+      /* MATSUSHITA DVD-RAM LF-D100 treats as MOD */
+      scsi_result[0] = TYPE_MOD;
+      scsi_result[1] |= 0x80;     /* removable */
+      PANA_DVD_RAM[0] = channel;
+      PANA_DVD_RAM[1] = dev;
+    }
+  }
+
   if (!strncmp (scsi_result + 8, "NEC", 3)) {
     if (!strncmp (scsi_result + 16, "CD-ROM DRIVE:84 ", 16) ||
         !strncmp (scsi_result + 16, "CD-ROM DRIVE:25", 15))
@@ -812,6 +839,13 @@
     *max_dev_lun = 8;
     return 1;
   }
+
+  /* MATSUSHITA DVD-RAM LF-D100 */
+  if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && org_lun == 1) {
+    *max_dev_lun = 2;
+    return 1;
+  }
+
   /*
    * We assume the device can't handle lun!=0 if: - it reports scsi-0 (ANSI
    * SCSI Revision 0) (old drives like MAXTOR XT-3280) or - it reports scsi-1
=======================================================================

(3) 以上のパッチをあて,構築しなおしたカーネルを使えば,PD, DVD-RAM の
    利用ができるはずです.DVD-RAM を mke2fs する時などは,640MB MO の
    場合と同様の注意が必要です ( 2048 byte/sector のため ).
    2048 byte/sector パッチを入手した WebPage の説明をよく読んでください.
    パーティションを切って使うことも,切らずに whole disc で使うことも
    問題なくできます.

    また,ディスクの交換後 mount する際には,LF-D100J の本体のアクセス
    ランプがグリーンに変化したことを確認した後に mount してください.
    でないと,バッファに残っている古いディスクの情報が使われてしまう
    ことがあるようです (このあたり,ドライブのファームウェア改修を
    望みたいところです).

    正常に動けば,workman なども普通に使うことができます.
    DVD-RAM を入れて mount している際に workman を上げても
    きちんと「音楽 CD は入っていない」となります.

    Win95 上のドライバによって作成された DVD-RAM をそのまま使用すること
    はできません.UDF フォーマットが扱えないのはドライバがないため当然
    としても,FAT16 でフォーマットしたものも利用できません.
    これはディスク上の block の扱いが異なるためです.
    2048 byte/sector パッチでは,1 sector を512 byte の block x 4 個で
    扱っていますが,Win95 上の LF-D100J ドライバでは,2048 byte を
    1 block としています.ディスクのパーティション情報も FAT も,
    この 2048 byte/block での値で管理されているようです.
    したがって,現状ではディスクの管理方法の違いにより,
    Win95 との間でのデータ交換はできません.


Win95 とのディスク共有については,いまさら FAT16 形式用の
パッチを作っても美味しくなさそうです.
UDF ドライバを作るように頑張った方がよほど有効な労力投入ですね.
( UDF ドライバって,既にどこかにあるのかな? 
  ご存知でしたら教えてください.)
私は,少なくとも今のところは,Win95 とのディスク共有の必要はないので,
そのためのドライバをいじる or 書くことはないでしょう.
( でも,どなたかが書いてくれると嬉しいな.(^_^) )

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」