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] <[email protected]> and 93c60ba66SKatsushi Kobayashi modified by Hidetoshi Shimokawa <[email protected]>. 103c60ba66SKatsushi Kobayashi Please note this driver is still under development. 113c60ba66SKatsushi Kobayashi You can find latest snapshots under: 12*33f4bccaSEitan Adler https://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 Kobayashi3. SBP-II support (sbp) 483c60ba66SKatsushi Kobayashi 493c60ba66SKatsushi Kobayashi - You need CAM(SCSI) support in your kernel. 503c60ba66SKatsushi Kobayashi If you are using FreeBSD-5 before 2002/03/23 or FreeBSD-4 before 513c60ba66SKatsushi Kobayashi 2002/4/8, you need to apply CAM-patch in this archive 523c60ba66SKatsushi Kobayashi to handle HDD's(T_RBC or T_DIRECT which doesn't support READ_6). 533c60ba66SKatsushi Kobayashi 543c60ba66SKatsushi Kobayashi - If you connect a few firewire devices only, try the following to 553c60ba66SKatsushi Kobayashi reduce gap overhead. 563c60ba66SKatsushi Kobayashi 573c60ba66SKatsushi Kobayashi - ./bus_mgm -g 8 583c60ba66SKatsushi Kobayashi 593c60ba66SKatsushi Kobayashi4. Ethernet over FireWire (if_fwe) 603c60ba66SKatsushi Kobayashi 613c60ba66SKatsushi Kobayashi This is a sample driver for ethernet emulation. Please note this 623c60ba66SKatsushi Kobayashi does NOT conform to any standards like IP over FireWire(RFC2734[4]). 633c60ba66SKatsushi Kobayashi It just sends ethernet frames encapsulated in asynchronous stream 643c60ba66SKatsushi 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 653c60ba66SKatsushi Kobayashi facilities what ethernet can do. (ipv6, bridging, vlan etc.) 663c60ba66SKatsushi Kobayashi 673c60ba66SKatsushi Kobayashi It also has DEVICE_POLLING[5] support. To enable it, edit your 683c60ba66SKatsushi Kobayashi kernel config file and Makefile.fwe then rebuild kernel and if_fwe.ko. 693c60ba66SKatsushi Kobayashi 703c60ba66SKatsushi Kobayashi5. FireWire for Kernel Hackers 713c60ba66SKatsushi Kobayashi 723c60ba66SKatsushi Kobayashi As you know, IEEE1394 is a bus and OHCI supports physical access 733c60ba66SKatsushi Kobayashi to the host memory. This means that you can access the remote 743c60ba66SKatsushi Kobayashi host over firewire without software support at the remote host. 753c60ba66SKatsushi Kobayashi In other words, you can investigate remote host's physical memory 763c60ba66SKatsushi Kobayashi whether its OS is alive or crashed or hangs up. 773c60ba66SKatsushi Kobayashi 783c60ba66SKatsushi Kobayashi You need to apply KVMLIB-patch and rebuild libkvm then rebuild ps, 793c60ba66SKatsushi Kobayashi dmesg and gdb those are statically linked. 803c60ba66SKatsushi Kobayashi You may want to apply GDB-patch in this archive to get same behavior 813c60ba66SKatsushi Kobayashi as gdb with /dev/mem or want to insert savectx(&dumppcb) into panic(), 823c60ba66SKatsushi Kobayashi breakpoint() and so on to emulation crash dump. 833c60ba66SKatsushi Kobayashi 843c60ba66SKatsushi Kobayashi You have to determine target node_id manually at this point. 853c60ba66SKatsushi Kobayashi (guess using bus_mgm -t or dmesg) 863c60ba66SKatsushi Kobayashi (Targets should be specified by EUI64 in the future) 873c60ba66SKatsushi Kobayashi 883c60ba66SKatsushi Kobayashi # sysctl kern.firewire.fwmem_node=[node_id] 893c60ba66SKatsushi Kobayashi 903c60ba66SKatsushi Kobayashi # ps -agx -M /dev/fwmem0 -N /sys/i386/compile/GENERIC/kernel 913c60ba66SKatsushi Kobayashi # dmesg -M /dev/fwmem0 -N /sys/i386/compile/GENERIC/kernel 923c60ba66SKatsushi Kobayashi # gdb -k -c /dev/fwmem0 /sys/i386/compile/GENERIC/kernel.debug 933c60ba66SKatsushi Kobayashi # dd if=/dev/fwmem0 of=vmcore bs=1m count=[phys. memory in MB] 943c60ba66SKatsushi Kobayashi 953c60ba66SKatsushi Kobayashi remote gdb at 400,000,000 bps :-) 963c60ba66SKatsushi Kobayashi 973c60ba66SKatsushi Kobayashi 983c60ba66SKatsushi Kobayashi6. DV 993c60ba66SKatsushi Kobayashi I have not tested yet. 1003c60ba66SKatsushi Kobayashi 1013c60ba66SKatsushi Kobayashi7. Tested HW 1023c60ba66SKatsushi Kobayashi 1033c60ba66SKatsushi Kobayashi OS 1043c60ba66SKatsushi Kobayashi - FreeBSD-4/i386 1053c60ba66SKatsushi Kobayashi - FreeBSD-4/alpha 1063c60ba66SKatsushi Kobayashi - FreeBSD-5/i386 1073c60ba66SKatsushi Kobayashi 1083c60ba66SKatsushi Kobayashi * Not tested on SMP. 1093c60ba66SKatsushi Kobayashi * Not tested on big-endian machine... 1103c60ba66SKatsushi Kobayashi 1113c60ba66SKatsushi Kobayashi OHCI 1123c60ba66SKatsushi Kobayashi - Texas Instruments TSB12LV26 (PCI) 1133c60ba66SKatsushi Kobayashi - Texas Instruments TSB43AA22 (PCI/Cardbus) 1143c60ba66SKatsushi Kobayashi 1153c60ba66SKatsushi Kobayashi * There might be phy probing problem but most of the OHCI 1163c60ba66SKatsushi Kobayashi chips should work. 1173c60ba66SKatsushi Kobayashi * Tested with multiple firewire buses. 1183c60ba66SKatsushi Kobayashi 1193c60ba66SKatsushi Kobayashi SBP-II 1203c60ba66SKatsushi Kobayashi - HDD: Logitec USB/FireWire LHD-P30FU 1213c60ba66SKatsushi Kobayashi - HDD: Yano A-dish 120GB 1223c60ba66SKatsushi Kobayashi - HDD: Yano B-Max 320GB 1233c60ba66SKatsushi Kobayashi The repository of cvsup2.jp.freebsd.org is on this device. 1243c60ba66SKatsushi Kobayashi - HDD: Personal Storage 3000XT 160GB 1253c60ba66SKatsushi Kobayashi The last sector of this drive cannot be accessed.. 1263c60ba66SKatsushi Kobayashi - DVD-RAM: Panasonic LF-D340JD 1273c60ba66SKatsushi Kobayashi - SCSI-FireWire converter: Yano FWSCSI-01 1283c60ba66SKatsushi Kobayashi We can recognize only 1 device/lun at this point 1293c60ba66SKatsushi Kobayashi - HDD: iPod, PowerBook G4 (target mode) 1303c60ba66SKatsushi Kobayashi Reported by ikob 1313c60ba66SKatsushi Kobayashi - Scanner: Epson GT-9700F 1323c60ba66SKatsushi Kobayashi Now works!! 1333c60ba66SKatsushi Kobayashi Sane-backend needs a patch(SANE-patch in this archive). 1343c60ba66SKatsushi Kobayashi 1353c60ba66SKatsushi Kobayashi if_fwe 1363c60ba66SKatsushi Kobayashi - IPv4, IPv6, bridging, vlan. 1373c60ba66SKatsushi Kobayashi - You need at least two FreeBSD machines with this driver to use. 1383c60ba66SKatsushi Kobayashi 1393c60ba66SKatsushi KobayashiReferences: 1403c60ba66SKatsushi Kobayashi[1] ftp://ftp.uec.ac.jp/pub/firewire/beta/ 1413c60ba66SKatsushi Kobayashi[2] http://developer.intel.com/technology/1394/download/ohci_11.htm 1423c60ba66SKatsushi Kobayashi[3] http://www.t10.org/scsi-3.htm 1433c60ba66SKatsushi Kobayashi[4] http://www.faqs.org/rfcs/rfc2734.html 1443c60ba66SKatsushi Kobayashi[5] http://info.iet.unipi.it/~luigi/polling/ 1453c60ba66SKatsushi Kobayashi 1463c60ba66SKatsushi Kobayashi 1473c60ba66SKatsushi KobayashiHidetoshi Shimokawa 1483c60ba66SKatsushi Kobayashi[email protected] 149