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