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