13c60ba66SKatsushi Kobayashi 23c60ba66SKatsushi KobayashiIEEE 1394 support for FreeBSD-5.X and 4.X. 33c60ba66SKatsushi Kobayashi 43c60ba66SKatsushi Kobayashi1. Introduction 53c60ba66SKatsushi Kobayashi 63c60ba66SKatsushi Kobayashi This tarball contains IEEE1394(FireWire) driver which is first 73c60ba66SKatsushi Kobayashi written by Katsushi Kobayashi[1] <ikob@koganei.wide.ad.jp> and 83c60ba66SKatsushi Kobayashi modified by Hidetoshi Shimokawa <simokawa@freebsd.org>. 93c60ba66SKatsushi Kobayashi Please note this driver is still under development. 103c60ba66SKatsushi Kobayashi You can find latest snapshots under: 11*33f4bccaSEitan Adler https://people.freebsd.org/~simokawa/ 123c60ba66SKatsushi Kobayashi named firewire-2002XXXX.tar.gz 133c60ba66SKatsushi Kobayashi 143c60ba66SKatsushi Kobayashi The driver consists of 6 parts: 153c60ba66SKatsushi Kobayashi 163c60ba66SKatsushi Kobayashi - fwohci.c/fwohci_pci.c 173c60ba66SKatsushi Kobayashi OHCI[2] driver 183c60ba66SKatsushi Kobayashi - IEEE1394 link/phy chip control 193c60ba66SKatsushi Kobayashi - firewire.c 203c60ba66SKatsushi Kobayashi Chip independent driver 213c60ba66SKatsushi Kobayashi - CSR 223c60ba66SKatsushi Kobayashi - Transaction 233c60ba66SKatsushi Kobayashi - Character devices for userland 243c60ba66SKatsushi Kobayashi - fwmem.c 253c60ba66SKatsushi Kobayashi /dev/fwmem0: physical memory of a remote node. 263c60ba66SKatsushi Kobayashi - sbp.c 273c60ba66SKatsushi Kobayashi SBP-II[3] (a.k.a. SCSI over FireWire) driver 283c60ba66SKatsushi Kobayashi 293c60ba66SKatsushi Kobayashi - if_fwe.c 303c60ba66SKatsushi Kobayashi NON-Standard implementation of Ethernet over FireWire. 313c60ba66SKatsushi Kobayashi 323c60ba66SKatsushi Kobayashi - bus_mgm.c (userland) 333c60ba66SKatsushi Kobayashi Bus management function for user. 343c60ba66SKatsushi Kobayashi show topology map, change gap count, bus reset, etc. 353c60ba66SKatsushi Kobayashi 363c60ba66SKatsushi Kobayashi2. Installation 373c60ba66SKatsushi Kobayashi 383c60ba66SKatsushi Kobayashi Suppose you have kernel source at /sys. 393c60ba66SKatsushi Kobayashi 403c60ba66SKatsushi Kobayashi - Extract tarball at root directory. 413c60ba66SKatsushi Kobayashi - cd /sys/dev/firewire 423c60ba66SKatsushi Kobayashi - make 433c60ba66SKatsushi Kobayashi - make install 443c60ba66SKatsushi Kobayashi - make load 453c60ba66SKatsushi Kobayashi 463c60ba66SKatsushi Kobayashi3. SBP-II support (sbp) 473c60ba66SKatsushi Kobayashi 483c60ba66SKatsushi Kobayashi - You need CAM(SCSI) support in your kernel. 493c60ba66SKatsushi Kobayashi If you are using FreeBSD-5 before 2002/03/23 or FreeBSD-4 before 503c60ba66SKatsushi Kobayashi 2002/4/8, you need to apply CAM-patch in this archive 513c60ba66SKatsushi Kobayashi to handle HDD's(T_RBC or T_DIRECT which doesn't support READ_6). 523c60ba66SKatsushi Kobayashi 533c60ba66SKatsushi Kobayashi - If you connect a few firewire devices only, try the following to 543c60ba66SKatsushi Kobayashi reduce gap overhead. 553c60ba66SKatsushi Kobayashi 563c60ba66SKatsushi Kobayashi - ./bus_mgm -g 8 573c60ba66SKatsushi Kobayashi 583c60ba66SKatsushi Kobayashi4. Ethernet over FireWire (if_fwe) 593c60ba66SKatsushi Kobayashi 603c60ba66SKatsushi Kobayashi This is a sample driver for ethernet emulation. Please note this 613c60ba66SKatsushi Kobayashi does NOT conform to any standards like IP over FireWire(RFC2734[4]). 623c60ba66SKatsushi Kobayashi It just sends ethernet frames encapsulated in asynchronous stream 633c60ba66SKatsushi Kobayashi packets. It doesn't scale because it does something like unicast over multicast, but it's easy to be implemented and you can use any 643c60ba66SKatsushi Kobayashi facilities what ethernet can do. (ipv6, bridging, vlan etc.) 653c60ba66SKatsushi Kobayashi 663c60ba66SKatsushi Kobayashi It also has DEVICE_POLLING[5] support. To enable it, edit your 673c60ba66SKatsushi Kobayashi kernel config file and Makefile.fwe then rebuild kernel and if_fwe.ko. 683c60ba66SKatsushi Kobayashi 693c60ba66SKatsushi Kobayashi5. FireWire for Kernel Hackers 703c60ba66SKatsushi Kobayashi 713c60ba66SKatsushi Kobayashi As you know, IEEE1394 is a bus and OHCI supports physical access 723c60ba66SKatsushi Kobayashi to the host memory. This means that you can access the remote 733c60ba66SKatsushi Kobayashi host over firewire without software support at the remote host. 743c60ba66SKatsushi Kobayashi In other words, you can investigate remote host's physical memory 753c60ba66SKatsushi Kobayashi whether its OS is alive or crashed or hangs up. 763c60ba66SKatsushi Kobayashi 773c60ba66SKatsushi Kobayashi You need to apply KVMLIB-patch and rebuild libkvm then rebuild ps, 783c60ba66SKatsushi Kobayashi dmesg and gdb those are statically linked. 793c60ba66SKatsushi Kobayashi You may want to apply GDB-patch in this archive to get same behavior 803c60ba66SKatsushi Kobayashi as gdb with /dev/mem or want to insert savectx(&dumppcb) into panic(), 813c60ba66SKatsushi Kobayashi breakpoint() and so on to emulation crash dump. 823c60ba66SKatsushi Kobayashi 833c60ba66SKatsushi Kobayashi You have to determine target node_id manually at this point. 843c60ba66SKatsushi Kobayashi (guess using bus_mgm -t or dmesg) 853c60ba66SKatsushi Kobayashi (Targets should be specified by EUI64 in the future) 863c60ba66SKatsushi Kobayashi 873c60ba66SKatsushi Kobayashi # sysctl kern.firewire.fwmem_node=[node_id] 883c60ba66SKatsushi Kobayashi 893c60ba66SKatsushi Kobayashi # ps -agx -M /dev/fwmem0 -N /sys/i386/compile/GENERIC/kernel 903c60ba66SKatsushi Kobayashi # dmesg -M /dev/fwmem0 -N /sys/i386/compile/GENERIC/kernel 913c60ba66SKatsushi Kobayashi # gdb -k -c /dev/fwmem0 /sys/i386/compile/GENERIC/kernel.debug 923c60ba66SKatsushi Kobayashi # dd if=/dev/fwmem0 of=vmcore bs=1m count=[phys. memory in MB] 933c60ba66SKatsushi Kobayashi 943c60ba66SKatsushi Kobayashi remote gdb at 400,000,000 bps :-) 953c60ba66SKatsushi Kobayashi 963c60ba66SKatsushi Kobayashi 973c60ba66SKatsushi Kobayashi6. DV 983c60ba66SKatsushi Kobayashi I have not tested yet. 993c60ba66SKatsushi Kobayashi 1003c60ba66SKatsushi Kobayashi7. Tested HW 1013c60ba66SKatsushi Kobayashi 1023c60ba66SKatsushi Kobayashi OS 1033c60ba66SKatsushi Kobayashi - FreeBSD-4/i386 1043c60ba66SKatsushi Kobayashi - FreeBSD-4/alpha 1053c60ba66SKatsushi Kobayashi - FreeBSD-5/i386 1063c60ba66SKatsushi Kobayashi 1073c60ba66SKatsushi Kobayashi * Not tested on SMP. 1083c60ba66SKatsushi Kobayashi * Not tested on big-endian machine... 1093c60ba66SKatsushi Kobayashi 1103c60ba66SKatsushi Kobayashi OHCI 1113c60ba66SKatsushi Kobayashi - Texas Instruments TSB12LV26 (PCI) 1123c60ba66SKatsushi Kobayashi - Texas Instruments TSB43AA22 (PCI/Cardbus) 1133c60ba66SKatsushi Kobayashi 1143c60ba66SKatsushi Kobayashi * There might be phy probing problem but most of the OHCI 1153c60ba66SKatsushi Kobayashi chips should work. 1163c60ba66SKatsushi Kobayashi * Tested with multiple firewire buses. 1173c60ba66SKatsushi Kobayashi 1183c60ba66SKatsushi Kobayashi SBP-II 1193c60ba66SKatsushi Kobayashi - HDD: Logitec USB/FireWire LHD-P30FU 1203c60ba66SKatsushi Kobayashi - HDD: Yano A-dish 120GB 1213c60ba66SKatsushi Kobayashi - HDD: Yano B-Max 320GB 1223c60ba66SKatsushi Kobayashi The repository of cvsup2.jp.freebsd.org is on this device. 1233c60ba66SKatsushi Kobayashi - HDD: Personal Storage 3000XT 160GB 1243c60ba66SKatsushi Kobayashi The last sector of this drive cannot be accessed.. 1253c60ba66SKatsushi Kobayashi - DVD-RAM: Panasonic LF-D340JD 1263c60ba66SKatsushi Kobayashi - SCSI-FireWire converter: Yano FWSCSI-01 1273c60ba66SKatsushi Kobayashi We can recognize only 1 device/lun at this point 1283c60ba66SKatsushi Kobayashi - HDD: iPod, PowerBook G4 (target mode) 1293c60ba66SKatsushi Kobayashi Reported by ikob 1303c60ba66SKatsushi Kobayashi - Scanner: Epson GT-9700F 1313c60ba66SKatsushi Kobayashi Now works!! 1323c60ba66SKatsushi Kobayashi Sane-backend needs a patch(SANE-patch in this archive). 1333c60ba66SKatsushi Kobayashi 1343c60ba66SKatsushi Kobayashi if_fwe 1353c60ba66SKatsushi Kobayashi - IPv4, IPv6, bridging, vlan. 1363c60ba66SKatsushi Kobayashi - You need at least two FreeBSD machines with this driver to use. 1373c60ba66SKatsushi Kobayashi 1383c60ba66SKatsushi KobayashiReferences: 1393c60ba66SKatsushi Kobayashi[1] ftp://ftp.uec.ac.jp/pub/firewire/beta/ 1403c60ba66SKatsushi Kobayashi[2] http://developer.intel.com/technology/1394/download/ohci_11.htm 1413c60ba66SKatsushi Kobayashi[3] http://www.t10.org/scsi-3.htm 1423c60ba66SKatsushi Kobayashi[4] http://www.faqs.org/rfcs/rfc2734.html 1433c60ba66SKatsushi Kobayashi[5] http://info.iet.unipi.it/~luigi/polling/ 1443c60ba66SKatsushi Kobayashi 1453c60ba66SKatsushi Kobayashi 1463c60ba66SKatsushi KobayashiHidetoshi Shimokawa 1473c60ba66SKatsushi Kobayashisimokawa@freebsd.org 148