xref: /freebsd/sys/dev/firewire/00README (revision 78d146160dc5339c9cdf7799551bcc442a6eb95b)
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