summaryrefslogtreecommitdiffstats
path: root/about.rst
blob: 0e4818b3224c38c3ff780663e4f5eba553962265 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
===================
About the subsystem
===================

2023/03/04 Takashi Sakamoto

.. contents:: Contents
   :depth: 2
   :local:
   :backlinks: top

Overview
========

..
  This section provides the viewers the overview of subsystem.

The overview of subsystem is illustrated in below figure.

::

      ++====================================================================++
      || User space                                                         ||
      ||  +---------+  +---------+  +---------+               +---------+   ||
      ||  | appl 1  |  | appl 2  |  | appl 3  |               | appl 4  |   ||
      ||  +----+----+  +----+----+  +----+----+               +----+----+   ||
      ||       |            |            |                         |        ||
      ++=======|============|============|=========================|========++
               |            |            | System call             |
      ++=======|============|============|=======++      ++========|========++
      ||       |            |            |       ||      ||        |        ||
      ||  +----+----+  +----+----+  +----+----+  ||      ||        |        ||
      ||  | fw0     |  | fw1     |  | fw2     |  ||      ||        |        ||
      ||  |  fw0.0  |  |  fw1.0  |  |  fw2.0  |  || bind || +------+------+ ||
      ||  |         |  |  fw1.1  |  |  fw2.1 ---------------+ unit driver | ||
      ||  |         |  |         |  |  fw2.2  |  ||      || +-------------+ ||
      ||  +----+----+  +----+----+  +----+----+  ||      ||                 ||
      ||       |            |            |       ||      || Other subsystem ||
      ||  +----+------------+------------+----+  ||      ++=================++
      ||  |           firewire-core           |  ||
      ||  +-----------------+-----------------+  ||
      ||                    |                    ||
      ||            +-------+-------+            ||
      ||            | firewire-ohci |            ||
      ||            +-------+-------+            ||
      || The subsystem      |                    ||
      ++====================|====================++
                            | PCI bus
          +-----------------+-----------------+
          |      1394 OHCI host controller    |
          |           +---------+             |
          |           | node A  |             |
          |           |         |             |
          |           | unit A1 |             |
          |           +---------+             |
          +------+---------------------+------+
                 |                     | IEEE 1394 bus
            +----+----+           +----+----+
            | node B  |           | node C  |
            |         |           |         |
            | unit B1 |           | unit C1 |
            | unit B2 |           | unit C2 |
            |         |           | unit C3 |
            +---------+           +---------+

Two devices are connected to a 1394 OHCI host controller hardware, connected by PCI bus. In the
topology of IEEE 1394 bus, the controller is identified as ``node A``. The two devices are
identified as ``node B`` and ``node C`` per each. They include some logical functions identified
as ``unit``.

In the subsystem, the host controller hardware is bound to ``firewire-ohci`` PCI driver. The driver
communicates to ``firewire-core`` bus driver, which registers and maintains some instance of device
for the node (e.g. ``fw0``) and unit (e.g. ``fw0.0``) in Linux system. It adds some character
device so that user space application operates the host controller device to communicate with the
node (e.g. ``fw1``). Additionally, it binds the unit to the unit driver so that any instance in the
other subsystem operates the host controller to communicate with the node which includes the unit
(e.g. ``fw2.1``).

The purpose of subsystem is to maintain ``firewire-core`` and ``firewire-ohci`` drivers, as well as
`the interface for the character devices and unit drivers
<https://docs.kernel.org/driver-api/firewire.html>`_ so that user space application can utilize
resources in IEEE 1394 bus.

Current Status
==============

* The latest stable releases of Linux IEEE 1394 drivers are those in the latest released Linux 4.x
  kernels or later.
* The drivers in Linux 2.4 were considered stable too but have not been updated anymore for a long
  time.

  * Therefore they lack many features and compatibility updates which went into Linux 2.6.x...4.x
    releases.

IEEE Organization Unique Identifier (OUI) Assignments
=====================================================

..
  This section provides the viewers how the node of Linux system is identified in IEEE 1394 bus.

OpenMoko project registered ``0x001F11`` to
`MAC Address Block Large (MA-L) <https://standards.ieee.org/products-programs/regauth/oui/>`_
maintained by Institute of Electrical and Electronics Engineers (IEEE). MA-L is formerly known as
OUI (Organizationally Unique Identifier). This subsystem uses the number for the value of
``vendor_id`` field in configuration ROM for self node.

OpenMoko project used the number to construct media access control address (MAC address). The rest
24 bit field has the value between ``0x023900`` and ``0x0239ff``. This subsystem uses ``0x023901``
for the value of ``model_id`` field in configuration ROM for self node.

Linux kernel v3.19 or before, ``0xd00d1e`` was used for ``vendor_id`` and ``000001`` was for
``model_id``. These values are not registered to IEEE.

Release notes
=============

The following release notes only summarize more notable changes. A complete list of IEEE 1394
related changes is available via kernel.org git

Linux kernel version 4
----------------------

Linux 4.9 (11 December 2016)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* tentative release notes as per v4.9-rc4
* ``firewire-net``

  * Add missing input validation. Invalid IP-over-1394 encapsulation headers could trigger buffer
    overflows, potentially leading up to remote code execution
    (`CVE-2016-8633 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8633>`_). Also fixed in
    v4.8.7 and v4.4.31.
  * Fix IP-over-1394 link fragmentation headers that were read and written incorrectly, which
    prevented fragmented reception from/ fragmented transmission to other stacks, including Mac
    OS X, Windows XP, and older Linux' ``eth1394``.  Also fixed in v4.8.7 and v4.4.31.

Linux 4.8 (2 October 2016)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-firewire-tascam``

  * Fix possible deadlock in hwdep interface. Also fixed in v4.7.4 and v4.4.21.

* ``snd-fireworks``

  * Fix possible deadlock in hwdep interface. Also fixed in v4.7.4, v4.4.21, v4.1.34, v3.18.43.

Linux 4.7 (24 July 2016)
^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-dice``

  * Add support for M-Audio Profire 610, and perhaps for Profire 2626.

* ``snd-firewire-lib``

  * Add tracepoints to dump a part of isochronous packet data in order to support debugging of
    device quirks and of kernel-internal packet processing.  The
    `patch changelog <https://git.kernel.org/linus/0c95c1d6197f>`_ describes how to use this
    feature.  A `subsequent commit <https://git.kernel.org/linus/a9c4284bf5a9>`_ expands the dump
    format.

* ``snd-firewire-lib``, ``snd-bebob``, ``snd-firewire-tascam``, ``snd-fireworks``

  * Remove matching of SYT fields of the outbound stream to those of the inbound stream since it
    proves to be unnecessary in practice.  The same was already done in ``snd-dice`` in Linux v4.6.
    This simplifies the kernel code and allows for finer-grained tasklet scheduling.

* ``snd-firewire-lib``, ``snd-bebob``, ``snd-firewire-digi00x``, ``snd-firewire-tascam``,
  ``snd-fireworks``, ``snd-oxfw``

  * Perform sound card registration at least 2 seconds after the last IEEE 1394 bus reset.  This
    was already implemented for ``snd-dice`` in Linux v4.5 and is now adopted by the other FireWire
    audio drivers. It ensures that the bus and device firmware settle into a ready state before
    userspace initiate I/O to the device.

Linux 4.6 (15 May 2016)
^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-bebob``

  * internal rework related to streaming recovery after bus reset

* ``snd-dice``

  * Change how the dependency between number of available PCM and MIDI channels versus sampling
    rate is handled.  Also affects the hw_params ioctl interface.  Userspace should set the
    desired sampling rate before starting PCM I/O.
  * Change how phase lock is ensured and how lock status is detected.
  * Remove matching of SYT fields of the outbound stream to those of the inbound stream. This
    synchronization happened when the device was configured for internal clock.  It required a
    startup delay of the outbound stream, which caused DICE II based devices to remain silent at
    the first attempt to start streaming.
  * Add support for previously unavailable higher PCM channels on certain devices with high
    channel count, notably Focusrite Saffire PRO 40, Focusrite Liquid Saffire 56, and TC Electronic
    Studio Konnekt 48.  These devices spread the PCM and MIDI channels across 2 tx + 2 rx IEEE
    1394 channels instead of just 1 tx + 1 rx IEEE 1394 channel, as most other devices do.

* ``snd-oxfw``

  * improvements to MIDI I/O

Linux 4.5 (13 March 2016)
^^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-dice``

  * Improved handling of DICE II firmware bootstrapping during device start-up.
  * Avoid time-out when PCM streaming is started.

* ``snd-firewire-tascam``

  * Add support for TASCAM FW-1804.

* ``snd-scs1x``

  * The functionality of this driver was moved to the ``snd-oxfw`` driver, and the now obsolete
    ``snd-scs1x`` module has been removed.

Linux 4.4 (10 January 2016)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-ohci``

  * Work around JMicron JMB38x initialization quirk. Affected isochronous transmission, e.g.
    audio via FFADO or ALSA.  Also fixed in v4.3.3, v4.2.8, v4.1.15, v3.18.26, v3.16.35,
    v3.14.59, v3.12.52, v3.10.95, v3.4.113, v3.2.74.

* ``snd-bebob``

  * Fix device identifier of Mackie Onyx 1220/1620/1640 FireWire I/O card.

* ``snd-dice``

  * Fix device identifier of Mackie Onyx Blackbird and Onyx-i series.

* ``snd-firewire-digi00x``

  * New driver for Digidesign audio interfaces: Digi 002 Console, Digi 002 Rack, Digi 003
    Console, Digi 003 Rack, Digi 003 Rack+. Written by Takashi Sakamoto.

* ``snd-firewire-lib``

  * Restructured and extended for wider protocol support. Data block processing is split from
    isochronous packet processing. This work was required for integration of ``snd-firewire-digi00x``
    and ``snd-firewire-tascam`` because devices which are supported by these drivers do not comply
    with IEC 61883-6. Written by Takashi Sakamoto.

* ``snd-firewire-tascam``

  * New driver for TASCAM audio interfaces: FW-1082, FW-1884. Written by Takashi Sakamoto.

* ``snd-oxfw``

  * Fix Mackie Onyx Satellite packet discontinuity when device is used in base station mode.
  * Add support for TASCAM FireOne.
  * Fix calculation of MIDI ports.
  * Fix for statically linked (i.e. non-modular) builds.

Linux 4.3 (1 November 2015)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* No functional changes to the FireWire subsystem.

Linux 4.2 (30 August 2015)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-bebob``

  * Add support for

    * Digidesign Mbox 2 Pro
    * Behringer FCA610, FCA1616

  * Improve BeBoB v3 support (PrismSound Orpheus, Behringer UFX1604, Behringer FCA610).
  * Improved clock source detection. Add SYT-Match support.

* ``snd-firewire-lib``

  * Internal changes related to packet handling.

* ``snd-fireworks``

  * Fix packet discontinuity with newer firmwares.  Also fixed in v4.1.6 and v3.18.21.

Linux 4.1 (21 June 2015)
^^^^^^^^^^^^^^^^^^^^^^^^

* No functional changes to the FireWire subsystem.

Linux 4.0 (12 April 2015)
^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * The vendor ID and model ID in the Configuration ROM root directory of Linux hosts was changed
    from ``0xd00d1e:0x000001`` to ``0x001f11:0x023901``. This change makes ``firewire-core`` 's
    local Configuration ROM comply with IEEE's OUI assignment rules.
  * This has been made possible by Openmoko's granting a range of IDs to the Linux IEEE 1394
    subsystem. See IEEE OUI Assignments for additional information. This change cannot have
    negative impact on any standard protocols, but developers of private protocols may need to
    adapt if they relied on these root directory entries instead of their own unit directory
    entries.
  * The change was also backmerged into v3.12.51.

* ``snd-bebob``

  * Fix initialization of some M-Audio devices with Linux on big-endian CPUs. Also fixed in
    v3.19.5 and v3.18.13.

* ``snd-firewire-lib``, ``snd-bebob``, ``snd-dice``, ``snd-fireworks``

  * Fix device reference counting and shutdown. Also fixed in v3.19.2.

Linux kernel version 3
-----------------------

Linux 3.19 (8 February 2015)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-ohci``, ``firewire-sbp2``

  * small internal changes without functional change

* ``snd-dice``

  * Large rework by Takashi Sakamoto in order to support PCM capture and MIDI I/O. (Before, only
    PCM playback was implemented.)  This adds support for a wide range of DICE based audio
    devices.

* ``snd-firewire-lib``

  * Limit MIDI transmission rate as per specification to prevent loss of messages.

* ``snd-oxfw``

  * Driver was renamed from ``snd-firewire-speakers`` to ``snd-oxfw`` in order to reflect upcoming
    support for more audio devices based on OXFW970/971 based devices.
  * Large rework by Takashi Sakamoto in order to support PCM capture and MIDI I/O. (Before, only
    PCM playback was implemented.)
  * Additional device support implemented by Takashi Sakamoto:

     * Behringer F-Control Audio 202
     * Mackie(Loud) Onyx-i series (former models)
     * Mackie(Loud) Onyx Satellite
     * Mackie(Loud) Tapco Link.Firewire
     * Mackie(Loud) d.2 pro/d.4 pro
     * Mackie(Loud) U.420/U.420d

Linux 3.18 (7 December 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firedtv``

  * Fix potential overflow of operands for Conditional Access.

* ``firewire-core``

  * Prevent kernel stack leaking into ioctl arguments. Also fixed in v3.17.4, v3.14.25, v3.12.34,
    v3.10.61, v3.4.106, v3.2.65.

* ``snd-bebob``

  * Fix Terratec Phase 88 clock source detection. Also fixed in v3.17.2 and v3.16.7.
  * Fix Terratec Phase 88 Rack FW clock source detection.
  * Fix Saffire Pro clock source detection. Also fixed in v3.17.3.

Linux 3.17 (5 October 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-dice``

  * Fix regression at 176.4 and 192.0 kHz sample rate. Also fixed in v3.16.4.

Linux 3.16 (3 August 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* Two new drivers were added:

  * ``snd-fireworks``

    * New ALSA driver, implemented by Takashi Sakamoto, for FireWire audio devices which are
      based on the Echo Digital Audio Fireworks platform. The following devices are supported:

       * Echo AudioFire 12/ 8 (until 2009 July)
       * Echo AudioFire 2/ 4/ Pre8/ 8 (since 2009 July)
       * Echo Fireworks 8/ HDMI
       * Gibson Robot Interface Pack/ GoldTop
       * Mackie Onyx 400F/ 1200F

  * ``snd-bebob``

    * New ALSA driver, implemented by Takashi Sakamoto, for FireWire audio devices based on
      BridgeCo DM1000/DM1100/DM1500 chipsets with BeBoB firmware, in particular:

       * Acoustic Reality eAR Master One
       * Apogee X-FireWire card for DA/AD/DD-16X and Rosetta 200/400
       * Apogee Ensemble
       * Behringer Digital Mixer X32 series (X-UF card)
       * Behringer XENIX UFX 1204/ 1604
       * BridgeCo RDAudio1/ Audio5
       * CME Matrix K
       * Edirol FA-66/ FA-101
       * ESI Quatafire 610
       * Focusrite Saffire, Saffire LE, Saffire PRO 10 I/O, Saffire PRO 26 I/O (the older silver
         model; newer Saffire PRO models use a different chipset)
       * iCON FireXon
       * Lynx Aurora 8/ 16 with LT-FW
       * Mackie d.2 with FireWire option
       * Mackie Onyx 1220/ 1620/ 1640 with FireWire I/O card
       * M-Audio FireWire 1814, ProjectMix I/O
       * M-Audio FireWire 410/ AudioPhile/ Solo
       * M-Audio Ozonic, NRV10, ProFire LightBridge
       * Phonic Helix Board 12/18/24 FireWire MKII
       * Phonic Helix Board 12/18/24 Universal
       * PreSonus FireBox, FP10 (FirePod), Inspire 1394
       * Prism Sound Orpheus, ADA-8XR
       * Stanton FinalScratch 2 (ScratchAmp)
       * Tascam IF-FW/DM
       * TerraTec Aureon 7.1 FireWire
       * TerraTec EWS MIC2, EWS MIC8
       * TerraTec Phase 24 FW, Phase X24p FW, Phase 88 RackFW
       * Yamaha GO44, GO46

  * ``snd-firewire-lib``

    * several extensions implemented by Takashi Sakamoto in order to support the two new drivers

* Many of the mentioned audio devices are also supported by the
  `FFADO userspace drivers <http://ffado.org/>`_ (and have been for some time). The new ALSA
  kernel drivers are an alternative to (or replacement of) the sound streaming portion of FFADO,
  i.e. the part which implements PCM and MIDI I/O.  Extra userspace software like ``ffado-mixer``
  remains required for control of device features like router, mixer, clock source, port modes,
  and so on.

* Takashi Sakamoto published an extensive
  `report <https://github.com/takaswie/alsa-firewire-report/blob/master/firewire.pdf>`_ on the
  new drivers.

Linux 3.15 (8 June 2014)
^^^^^^^^^^^^^^^^^^^^^^^^

* In v3.14, a feature was added to enable remote DMA from and to memory outside the 32 bit range
  of physical addresses, which is possible at least with LSI FW643 controllers. This feature
  clashed with at least one vendor-specific device control protocol and was therefore reverted in
  v3.15 and v3.14.7.

Linux 3.14 (30 March 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-net``

  * Fix a use-after-free bug which could occur after transmission failures.

* ``firewire-ohci``

  * The new module parameter ``remote_dma`` (default = N, enable unfiltered remote DMA = Y)
    replaces the former build-time option CONFIG_FIREWIRE_OHCI_REMOTE_DMA.  (This kernel
    configuration option was located in the ``Kernel hacking`` menu, item ``Remote debugging over
    FireWire with ``firewire-ohci``.)  It is therefore now possible to switch on RDMA at runtime
    on all kernels with ``firewire-ohci`` loaded or built-in, for example for remote debugging,
    without the need for a custom build option.

* Fix initialization failure with Agere FW323 and some other Agere/LSI controllers.  These
  failures were a regression since Linux v3.10 inclusive.  Also fixed in v3.13.7, v3.12.15,
  v3.11.10.7, v3.10.41.

Linux 3.13 (19 January 2014)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``snd-dice``

  * New ALSA driver, written by Clemens Ladisch. This is a playback-only driver for IEEE 1394
    audio interfaces which are based on the DICE chip family (DICE-II/Jr/Mini) from TC Applied
    Technologies.
  * For the time being, this driver is being bound only to devices which do not expose recording
    channels.  Drivers which support playback + capture + MIDI are available from the FFADO
    project in the form of JACK backends, implemented in userspace.
  * There are people working on extending the ``snd-dice`` ALSA driver to support capture and MIDI
    too, and to bring similar ALSA support to other FireWire audio devices.  When this is done,
    ALSA would replace FFADO's streaming related components.  Device control however, i.e. mixer
    and router controls etc., will continue to be implemented in userspace (typically by
    ``ffado-mixer`` of the FFADO project).

Linux 3.12 (3 November 2013)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core`` and ``firewire-ohci``

  * Fix a subsystem deadlock at bus reset which was sometimes observed if CPU resources were low.
    (This fixes a regression since Linux 3.2 inclusive. The subsystem workqueue deadlocked
    between transaction completion handling and bus reset handling if the kernel's worker thread
    pool could not be increased in time.)

Linux 3.11 (2 September 2013)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* userspace API

  * Fix corrupted video capture, seen with IIDC/DCAM applications and certain buffer settings.
    (Fixes a regression since v3.4 inclusive.  The fix has also been released in kernels v3.10.5,
    v3.8.13.7, v3.5.7.19, v3.4.56.)

* kernelspace API

  * The kernel-internal programming interface between ``firewire-core`` and protocol drivers was
    slightly changed to better support drivers which need to apply device-specific parameters
    or routines. Out-of-tree developers who maintain a stable history can
    ``git pull git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git fw_driver-api-transition``
    to receive commit `94a87157cde9 <https://git.kernel.org/linus/94a87157cde9">`_ from which a
    seamless transition to the current programming interface is possible.

Linux 3.10 (30 June 2013)
^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-net``

  * added support for IPv6-over-1394 compliant with
    `RFC 3146 <https://tools.ietf.org/html/rfc3146>`_, implemented by YOSHIFUJI Hideaki
  * release IR DMA context at ifdown
  * fix small memory leak at shutdown

* ``firewire-ohci``

  * fix video reception on VIA VT6306 with gstreamer, MythTV, and maybe dv4l
  * fix a startup issue with Agere/LSI FW643-e2
  * fix controller removal when controller is in suspended state
  * improved error logging

Linux 3.9 (28 April 2013)
^^^^^^^^^^^^^^^^^^^^^^^^^

* The firewire subsystem underwent only minor janitorial changes in this kernel.

Linux 3.8 (18 February 2013)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-net``

  * fix reception of fragmented multicast and broadcast datagrams

* ``firewire-sbp2``

  * pass through thin provisioning related opcodes to SPC-3 devices

* ``snd-scs1x``

  * New ALSA MIDI driver for Stanton
    `SCS.1d <http://www.stantondj.com/stanton-controllers-systems/scs1d.html>`_ and
    `SCS.1m <http://www.stantondj.com/stanton-controllers-systems/scs1m.html>`_ FireWire DJ
    controllers, written by Clemens Ladisch. (While MIDI is handled by the ``snd-scs1x`` driver,
    audio I/O with SCS.1m is handled by `FFADO <http://ffado.org/>`__ userspace drivers.)

Linux 3.7 (10 December 2012)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * cdev ioctl ABI: On 64-bit architectures, the kernel wrote 4 bytes too many to non-zero
    ``fw_cdev_get_info.bus_reset``. This could corrupt user memory in case of x86-32 userland on
    x86-64 kernel. This was fixed also in kernel 3.6.3, 3.5.7.1, 3.4.15, 3.2.32, 3.0.47.
  * seed the random number generator with GUIDs of FireWire nodes
  * internal optimization concerning address handlers

* ``firewire-ohci``

  * more complete TI TSB41BA3D support: properly read the local selfID0.i bit

* ``sbp-target``

  * minor fixes

Linux 3.6 (30 September 2012)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``, ``firewire-ohci``

  * various small fixes and optimizations

* sysfs ABI

  * new attribute ``/sys/bus/firewire/devices/fw[0-9]+/is_local`` to tell local and remote nodes
    apart

Linux 3.5 (21 July 2012)
^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * Fix mismatch between DMA mapping direction and DMA synchronization direction of isochronous
    reception buffers of userspace drivers if vma-mapped for R/W access. Depending on IOMMU
    properties of the hardware, this bug could have caused e.g. failures to capture video through
    ``libdc1394``.
  * more consistent retry stategy in device discovery/ rediscovery, and improved failure diagnostics

* ``sbp-target``

  * New driver: Adds SCSI target functionality over FireWire. This enables a Linux node to act as
    SBP-2/ SCSI device to other nodes on the FireWire bus, for example as hard disk — similar to
    FireWire Target Disk mode of the firmware of many Apple computers. Any SCSI command set
    supported by the Linux target core, multiple logical units on the target node, and concurrent
    login by initiators are supported by ``sbp-target``.
  * In the kernel configuration menu, the ``sbp-target`` option resides under
    ``Device Drivers/ Generic Target Core Mod (TCM) and ConfigFS Infrastructure/ FireWire SBP-2
    fabric module``.

Linux 3.4 (20 May 2012)
^^^^^^^^^^^^^^^^^^^^^^^

* ``<linux/firewire-cdev.h>`` API

  * Added ``FW_CDEV_IOC_FLUSH_ISO`` ioctl which lets an application get any currently completed
    isochronous packets reported. A corresponding ``libraw1394`` update to use this ioctl in
    ``raw1394_iso_recv_flush()`` has been released in libraw1394 2.0.9.

* ``firewire-core``, ``firewire-net``, ``firewire-ohci``, ``firewire-sbp2``

  * All messages to the kernel log are now consistently prefixed by driver name and device name
    or number.

* ``firewire-ohci``

  * Fix premature completion of multichannel isochronous reception DMA. Also fixed in kernel
    3.3.1, 3.2.14, 3.0.27.
  * Fix missing completion notification in isochronous I/O in case of big intervals between
    interrupt packets or with big packet headers. — Alas this introduced a regression for
    libdc1394 and FlyCap2, causing corrupted video, bogus framerates etc. with certain buffer
    settings or frame sizes. This regression has been fixed in kernels 3.11, 3.10.5, 3.8.13.7,
    3.5.7.19, 3.4.56.

* ``firewire-sbp2``

  * If the target's unit directory contains a ``Unit_Unique_ID`` entry, use it instead of the
    node unique ID as the target's GUID in the ``ieee1394_id`` sysfs attribute and consequently
    in udev's ``/dev/disk/by-id`` symbolic links.
  * Do not try to log into targets on the local node. I/O to such targets is not yet implemented,
    and local targets are probably meant to be accessed by remote initiators anyway.
  * Fix handling of SCSI sense data (deferred errors, Valid, Filemark, EOM, ILI).

Linux 3.3 (18 March 2012)
^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-ohci``

  * Add workaround for the 1394 part of Creative SoundBlaster Audigy in order to fix transaction
    failures. Also fixed in kernel 3.2.6 and 3.0.21.
  * Work around random malfunctions of Ricoh PCI Express 1394 controllers by disabling MSI
    (message signaled interrupts). Also fixed in kernel 3.2.6 and 3.0.21.

* Loosely related to FireWire (but also USB, SATA, and other interconnects): Some kernel crashes
  at hot unplug of storage devices were fixed; e.g. an infamous bug with card readers has been
  addressed.

Linux 3.2 (4 January 2012)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-net``

  * Increase throughput by use of unified transactions for incoming datagrams.

* ``firewire-ohci``

  * Add support for TI TSB41BA3D as local PHY. This PHY is found on special 1394b-400 cards.
  * Fix bus topology recognition in presence of a cycle master node with a wrong gap count. The
    issue was observed when switching off a bus-powered DesktopKonnekt6 audio device.
  * Properly synchronize isochronous I/O buffers on non-coherent architectures. Architectures
    with cache-coherent DMA like x86 or PPC were not affected.

Linux 3.1 (24 October 2011)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* Documentation

  * Added a brief introduction into `the character device file ABI <http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/ABI/stable/firewire-cdev;h=16d030827368b2c49cbbe396588635dfa69d6c08;hb=322a8b034003c0d46d39af85bf24fee27b902f48>`_.
    Inline documentation in the API header file was improved.

  * Added a reference documentation of `the sysfs ABI <http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/ABI/stable/sysfs-bus-firewire;h=3d484e5dc846ed9b7625c83d948322f825c323df;hb=322a8b034003c0d46d39af85bf24fee27b902f48>`_).

* ``<linux/firewire-cdev.h>`` API

  * Unknown ioctls set errno to ``ENOTTY`` now instead of ``EINVAL``. ``FW_CDEV_EVENT_BUS_RESET``
    events are now guaranteed not to be generated before ``FW_CDEV_IOC_GET_INFO`` was used to set
    the bus reset closure. Both issues are also fixed in Linux 3.0.1 and 2.6.35.14.
  * The first ``FW_CDEV_IOC_GET_INFO`` ioctl is clarified to start reception of bus reset events;
    earlier bus reset events are discarded. This ensures events with well-defined closure value
    under all circumstances. Also fixed in kernel 3.0.1 and 2.6.35.14.
  * Fixed an issue with 32 bit userland drivers on top of 64 bit kernel, resulting in
    ``FW_CDEV_IOC_GET_INFO`` failing with ``EFAULT``. Also fixed in kernel 3.0.25. ``libraw1394``
    and ``libdc1394`` were not affected by this issue.

* ``firewire-core``

  * Fix detection failures of old Panasonic and Grundig camcorders. The failure was accompanied
    by ``giving up on config rom`` log messages after ack-busy events in ``firewire-ohci`` 's debug
    log. Also fixed in kernel 3.0.25. (The fix addresses transaction failures to these camcorders
    which had more severe effect on the current driver stack than on the linux1394 drivers of
    kernel 2.6.36 and older. While basic DV capture without AV/C control works with these
    camcorders now, full operation also requires libraw1394 changes which were released in
    ``libraw1394`` 2.0.8.)

* ``firewire-ohci``

  * Continuing the optimization work that was released in kernel 3.0, CPU utilization during
    packet queueing was reduced further, benefiting all higherlevel 1394 kernel drivers and
    userland drivers.
  * Fix I/O and PM suspend with O2Micro PCIe FireWire controllers by blacklisting MSI on them.
    Also fixed in kernel 3.0.5.
  * A fix in the core kernel's memory management addresses ``firewire-ohci`` startup failures with
    kernels that were configured for a maximum number of CPUs of something else than a power of
    two. This was a regression since kernel 2.6.38. Also fixed in kernel 3.0.3.

* ``firewire-sbp2``

  * Fix panic when the module was unloaded while a management transaction was still pending,
    e.g. login. This was a regression since kernel 3.0. Also fixed in kernel 3.0.8.

Linux 3.0 (21 July 2011)
^^^^^^^^^^^^^^^^^^^^^^^^

* This release contains a few fixes and some optimizations regarding CPU utilization of the IEEE
  1394 kernel drivers, and the following more visible changes.
* ``firewire-ohci``

  * Probing of the FireWire part on Pinnacle MovieBoard is disabled for now because it used to
    lock up the kernel. Also disabled in kernel 2.6.39.4, 2.6.35.14. Perhaps we can come up with
    a proper fix longer term, perhaps not.

* ``firewire-sbp2``

  * Management of storage devices (connect, reconnect, disconnect) is now performed in parallel
    if there are two or more devices present.

* ``snd-isight``

  * New ALSA driver for the microphones in Apple iSight FireWire webcams. It exposes front and
    rear microphone as a sound card with two PCM capture channels. This supersedes an older
    out-of-the-mainline driver with the same function, called lisight, which depended on the
    removed ieee1394 driver stack.

Linux kernel version 2.6.3x
---------------------------

Linux 2.6.39 (18 May 2011)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * Increase the default timeout of outbound split transactions from 100 ms to 2000 ms. This is
    mostly just relevant to some audio devices for which the FFADO drivers used to increase this
    timeout.
  * Try to probe even nodes whose self-ID packet does not have the "link active" bit set. Some
    rare devices wrongly have this bit off and were therefore not recognized.
  * Fix the ``FW_CDEV_IOC_ADD/REMOVE_DESCRIPTOR`` ioctl()s which did not update the local Config
    ROM properly since kernel 2.6.36 if called in repetition. Also fixed in Linux 2.6.38.6.

* ``snd-firewire-speakers``

  * New ALSA driver for LaCie FireWire Speakers. Also has got some experimental support for
    Griffin FireWave.

Linux 2.6.38 (14 March 2011)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * Fix access to some Canon camcorders, notably MV5i. Also fixed in kernel 2.6.37.1, 2.6.36.4,
    and 2.6.33.8.

* ``firewire-net``

  * Longstanding performance issues are now fixed thanks to changes in ``firewire-ohci``.
  * Show carrier status to userland.
  * Refresh the ARP cache quicker after a temporary disconnection.

* ``firewire-ohci``

  * Fix reception of asynchronous packets larger than 4080 bytes.
  * Performance of asynchronous reception has been improved considerably. Busy link situations
    that were previously very common with ``firewire-net`` and with applications that required fast
    async reception are now avoided.
  * Fix restoration of the GUID after PM resume with some BIOSes.
  * Restart isochronous DMAs after PM resume if they were running at PM suspend time. Also
    needed for broadcast reception by ``firewire-net``.

* ``firedtv``

  * Fix reporting of IR remote control key presses to recent Xorg versions.

* As always, there have also been several further low-profile improvements, e.g. a few small
  changes to ``firewire-core`` and ``firewire-ohci`` which each lower CPU utilization a little
  bit or prevent potential corner case bugs.

* **Known issues:** On systems with the kernel configured for a maximum supported number of CPU
  cores which is not a power of two, ``firewire-ohci`` of kernel 2.6.38 and newer triggers a bug
  in the kernel's memory management system, causing a crash during boot
  `bug [31572] <https://bugzilla.kernel.org/show_bug.cgi?id=31572>`_. As a workaround, set
  ``CONFIG_NR_CPUS`` to 4 instead 3, 8 instead of 6, or 16 instead of 10 etc., depending on your
  needs. This bug has been fixed (i.e. the workaround is no longer needed) in Linux 3.1 and 3.0.3.

Linux 2.6.37 (4 January 2011)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-net``

  * Fix memory leaks.
  * Fix counting of transmit statistics.
  * Fix ``firewire-net`` blocking other FireWire I/O.

* ``firewire-ohci``

  * Fix crashes or memory corruption during reception of large asynchronous requests or
    responses. These bugs were for example experienced when using ``firewire-net``. Also fixed
    in 2.6.36.2, 2.6.35.10, 2.6.34.9, 2.6.33.8, and 2.6.32.27.

* ``firedtv``

  * Add support for DVB-S2 HD channels. (HD already worked on DVB-C and presumably DVB-T.)
  * Add a module parameter to adjust CA system IDs. This is a workaround for users of Content
    Access Module and applications like MythTV, in cases when manufacturer ID of a CAM and CA
    system ID differ.

* ``dv1394``, ``eth1394``, ``ieee1394``, ``ohci1394``, ``pcilynx``, ``raw1394``, ``sbp2``,
  ``video1394``

  * These drivers, a.k.a. the Linux1394 driver stack, have been removed.

    * ``firewire-ohci`` replaces ``ohci1394``.
    * ``firewire-core`` replaces ``ieee1394``, ``raw1394``, ``video1394``.
    * ``firewire-net`` replaces ``eth1394``.
    * ``firewire-sbp2`` replaces ``sbp2``.
    * There is no replacement for ``dv1394`` and ``pcilynx``.
    * The drivers ``firedtv``, ``init_ohci1394_dma``, and ``nosy`` are not affected by these
      replacements.

* **Known issues:** The rare and quirky controllers ALi M52xx, Apple UniNorth v1, NVIDIA NForce2
  are even less well supported by ``firewire-ohci`` than by ``ohci1394``. There were some ieee1394
  based out-of-the-mainline drivers. Of them, only `lisight <https://lisight.sourceforge.net/>`_,
  an audio driver for iSight webcams, seems still useful. Work is underway to reimplement it on
  top of ``firewire-core``.

Linux 2.6.36 (20 October 2010)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release brings several fixes and some new features for the newer firewire driver stack.
  Some of these fixes, as far as they affect ``libraw1394`` based software, also require
  ``libraw1394`` 2.0.6 (which contains corresponding updates) or later. Furthermore, an older
  special-purpose stand-alone driver has now been merged into the mainline kernel: Nosy, a packet
  sniffer for PCILynx cards.

* ``firewire-core``, interface to userspace drivers

  * Fix transaction responses if multiple cards are present.
  * Fix lock transaction responses.
  * Add new incoming request event type which carries information about source node and extended
    transaction code. This addresses deficiencies of the prior ABI for address range mapping and
    FCP which made it impossible to write target-like drivers in userspace. It also prevented
    FFADO to work with two or more audio devices together on the bus. In order to use this ABI
    fix with ``libraw1394`` based clients like e.g. FFADO, ``libraw1394`` v2.0.6 will be
    required.  (Due to be released soon.)
  * ``FW_CDEV_VERSION``, defined in ``<linux/firewire-cdev.h>``, is no longer being updated. Old
    ``libraw1394`` code misused this constant. If your code needs to handle different
    ``firewire-cdev.h`` file versions, have a look at current ``libraw1394`` code how it can be
    done. Basically, check for particular defined ioctls and event types.
  * Fix ``fw_cdev_event_bus_reset``: Implement ``bm_node_id``. Fix missing event on the local
    node's ``/dev/fw*`` after descriptor addition or removal.
  * New feature: Support multichannel isochronous reception. A corresponding update to libraw1394
    has not been implemented yet.
  * New feature: PHY packet transmission and reception. Among else this allows to implement
    VersaPHY controllers or VersaPHY devices in userspace.
  * The address range allocation ioctl now allows to allocate a CSR anywhere in a region larger
    than the CSR.
  * Add more safeguards against bogus ioctl data and against multithread client race conditions.
  * Several updates to the inline documentation in ``<linux/firewire-cdev.h>``.

* ``firewire-core``, bus management

  * Support the following CSRs on the local node: ``STATE_CLEAR/STATE_SET`` (cmstr and abdicate
    bits), ``NODE_IDS``, ``RESET_START`` (as dummy), ``SPLIT_TIMEOUT`` (useful to FFADO with BeBoB
    devices with lots of channels), ``CYCLE_TIME`` write support, ``BUS_TIME``, ``BUSY_TIMEOUT``,
    ``PRIORITY_BUDGET``, ``MAINT_UTILITY``.
  * More careful bus manager routines WRT temporary transaction failures, Cycle Master activation.
  * Bus resets that were issued by userspace clients via bus reset ioctl or indirectly by
    descriptor addition or removal (also ``firewire-net`` insertion and removal) are now better
    integrated into bus management: The gap count is kept stable, and the period between such bus
    resets is forced to be 2 seconds or more. This period is necessary for isochronous resource
    reallocation, SBP-2 reconnect, and similar procedures.

* ``firewire-ohci``

  * Enable message-signaled interrupts
    (`MSI <http://en.wikipedia.org/wiki/Message_Signaled_Interrupts>`_) on native PCIe
    controllers. This includes Agere FW643E (i.e. FW643 rev07), but not FW643 rev06 and older nor
    VIA VT6315 nor JMicron JMB38x on which we continue to use classic pin-based interrupts due to
    hardware bugs. MSIs are furthermore not present on Texas Instruments PCIe FireWire
    controllers which are PCI devices with a PCI–PCIe bridge. — MSI support was initially also
    enabled on older FW643 and VT6317 which led to regressions in kernels 2.6.36...2.6.36.2
    inclusive. This has been corrected in kernel 2.6.36.3.
  * Enable workaround for nonmonotonic Cycle Timer on Ricoh controllers. Cycle Timer is used by
    ``libdc1394`` and by FFADO for reception timestamps.

* ``firewire-sbp2``

  * Fix stalls with "Unsolicited response" with some firmwares of 4-bay RAID enclosures.
  * Fix a memory leak in error cases.

* ``nosy``

  * "New" driver: Nosy is a traffic sniffer driver for Texas Instruments PCILynx/ PCILynx-2 based
    cards. The use cases for nosy are analysis of nonstandard protocols and as an aid in
    development of drivers, applications, or firmwares.
  * Nosy was written by Kristian Høgsberg many years ago and maintained by him in a stand-alone
    source repository. Now the driver is available in the mainline kernel sources. Its userspace
    frontend, called nosy-dump, is also maintained and distributed with the kernel sources under
    tools/firewire/.
  * PCILynx/ PCILynx-2 is a FireWire controller which is not OHCI-1394 compliant. This controller
    is found for example on IOI IOI-1394TT (PCI card), Unibrain Fireboard 400 PCI Lynx-2
    (PCI card), Newer Technology FireWire 2 Go (CardBus card), and Apple Power Mac G3 blue &
    white (onboard controller).

* There is also an obscure change to the kernel's Makefiles with a side effect: When both
  ``ohci1394`` and ``firewire-ohci`` were installed but there was no modprobe blacklist
  configuration for one or both of them, then it was reportedly more likely in recent kernels that
  ``ohci1394`` was being bound to FireWire controllers. In 2.6.36, it will more likely be
  ``firewire-ohci``.

Linux 2.6.35 (1 August 2010)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release brings minor fixes to the new firewire driver stack.
* The old ieee1394 driver stack — i.e. ``ieee1394``, ``ohci1394``, ``pcilynx``, ``sbp2``,
  ``eth1394``, ``raw1394``, ``video1394``, ``dv1394`` — is now scheduled for removal in
  Linux 2.6.37.
* ``firewire-core``

  * Fix inaccessibility of certain Sony camcorders, caused by bus reset loops because of conflicts
    between ``firewire-core`` 's and the camcorder firmware's bus management. Fixed by checking
    for IEEE 1394a compliance of the isochronous resource manager. Also fixed in Linux 2.6.34.1,
    2.6.33.6, 2.6.32.16.
  * more robust allocation of transaction labels and time-out of transactions
  * lseek() is not useful with ``/dev/fw*``; it is now failed instead of seemingly succeeding

* ``firewire-ohci``

  * access PHY registers more safely
  * enable IEEE 1394a enhancements in the physical layer and link layer consistently (or disable
    consistently on IEEE 1394-1995 hardware)

* ``raw1394``, ``video1394``, ``dv1394``

  * lseek() is not useful with ``/dev/raw1394``, ``/dev/video1394/*``, ``/dev/dv1394/*``; it is
    now failed instead of seemingly succeeding

* **Known issues:** ``firewire-ohci`` changes in this release caused slow-down and data corruption on
  some TI TSB82AA2 based cards. This regression is fixed in kernel 2.6.36 and 2.6.35.8.

Linux 2.6.34 (16 May 2010)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``firewire-core``

  * fix "giving up on config rom for node id..." with some devices with bogus configuration ROM,
    notably Panasonic AG-DV2500 tape deck
  * fix Model_ID in modalias (sysfs variable and uevent)
  * more consistency checks in userspace driver interface
  * add ``FW_CDEV_IOC_GET_CYCLE_TIMER2`` ioctl for choice of local clock
  * put ``<linux/firewire-*.h>`` files under MIT license
  * remove incomplete support of ``Bus_Time`` CSR

* ``firewire-ohci``

  * Work around hardware that does not provide reliable cycle timer register access. Currently,
    this work around is active for the following known affected chips: ALi, NEC, VIA, TI
    TSB12LV22. A tool called `test_cycle_time <http://user.in-berlin.de/~s5r6/linux1394/utils/>`_
    exists which can be used to detect faulty chips that require addition to ``firewire-ohci`` 's
    internal quirks list. Reliable cycle timer access is needed for video reception timestamps
    and audio synchronization.
  * add module parameter that allows ad hoc activation of quirk fixes
  * fix detection of maximum available IR and IT DMA contexts
  * fixes for local (loopback) requests

* ``firedtv``

  * DMA mapping fixes

* ``ohci1394_earlyinit``

  * fix boot crash regression

Linux 2.6.33 (24 February 2010)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release finally adapts the ``firedtv`` DVB driver to be usable with the new stack
  alternatively to the old stack. It furthermore brings a few fixes for the new stack along
  with the usual assortment of less visible updates.
* Distributors who still ship the old stack (``ieee1394``, ``ohci1394``, ``raw1394``, ``sbp2``,
  ``eth1394`` and more) should now switch to the new one (``firewire-core``, ``firewire-ohci``,
  ``firewire-sbp2``, ``firewire-net``). In the first iteration, those distributors might want to
  ship the old stack also (but blacklisted) as a fallback for their users if unforeseen problems
  with the newer replacement drivers are encountered.
* The older FireWire stack contains several known problems which are not going to be fixed;
  instead, those issues are addressed by the new stack. An incomplete list of these issues is
  kept in `bugzilla <http://bugzilla.kernel.org/show_bug.cgi?id=10046>`_. We have a guide on
  migration from the older to the newer stack.
* ``firewire-core``

  * Properly support multiple concurrent FCP listeners. This is necessary if more than one
    process or driver requires continuous control over AV/C devices (e.g. camcorders, tape decks,
    audio devices, TV tuners).
  * Some small optimizations and fixes, among them improved Topology Map register handling.
  * Proper size check in the ``add_descriptor`` ioctl. Also fixed in Linux 2.6.32.8.

* ``firewire-net``

  * Fix a crash on SMP systems.

* ``firewire-ohci``

  * Always use packet-per-buffer mode for isochronous reception, not dual-buffer mode. Reasons
    to do so are different behavior of the modes under some circumstances, and hardware bugs in
    dual-buffer mode.
  * Fix possible crash with unusual isochronous reception parameters
    (`CVE-2009-4138 <http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-4138>`_). Also fixed
    in Linux 2.6.32.2, 2.6.31.9, 2.6.27.42.
  * Fix crashes or image corruption during video reception with TSB43AB23 on 64 bit systems with
    more than 2 GB RAM. Also fixed in Linux 2.6.32.8.
  * Fix potential breakup of isochronous transmission on some controllers, e.g. probably O2Micro
    controllers.

* ``firedtv``

  * Port to new firewire stack. Depending on whether the kernel is being configured for ieee1394
    (classic stack) or firewire (new stack) or both, the ``firedtv`` driver will automatically use
    the proper stack. This means that FireDTV users are no longer forced to use the old stack.

Linux 2.6.32 (2 December 2009)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release fixes the new FireWire drivers for operation with `FFADO <http://www.ffado.org/>`__
  (FireWire audio driver framework) and brings some other, minor updates. There are also fixes in
  ``libraw1394``  required in order to run FFADO on top of the new drivers; these fixes have been
  released in ``libraw1394`` v2.0.5.

* ``firewire-core``, ``firewire-ohci``, ``raw1394``

  * Fix a few obscure bugs which were unlikely to show up in practice.

* ``firewire-ohci``

  * Fix start-on-cycle feature of isochronous transmissions and receptions. Especially needed for
    FFADO.
  * Expose isochronous transmit cycle timestamps to ``firewire-core`` and thus to userspace drivers.
    Especially needed for FFADO.

* ``firewire-sbp2``

  * Fix potential bugs: login timeout, invalid SCSI status

* ``firedtv``

  * Fix automatic retuning of DVB-C cards after temporary loss of antenna signal.
  * Fix I/O to Conditional Access Module.
  * Improve module parameter for runtime debugging.

Linux 2.6.31 (9 September 2009)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* This release brings improved support of fine-grained access permission policies for FireWire
  application programs in userspace, IP networking with the new FireWire driver stack, and
  support for FireWire disks larger than 2 TB (this is also available in some stable kernel
  sub-releases before 2.6.31, see below).
* ``firewire-core``, ``firewire-ohci``, ``firewire-sbp2``

  * No longer marked as "experimental" in the kernel configuration menu. Distributors who
    provided the older ieee1394 driver stack so far are encouraged to build and install both
    driver stacks. Note, the new stack does not yet support studio audio devices, nor FireDTV DVB
    interfaces. (Support is currently in development.) See Juju Migration for further guidance on
    switching to the new drivers.
  * Driver source files and header files have been reorganized. This only affects kernel driver
    developers.

* ``firewire-core``

  * Added the sysfs attribute "units" to node representations. Its path is
    ``/sys/bus/firewire/devices/fw[0-9]+/units`` and it contains tuples of
    ``specifier-ID:software-version`` of all units found on a node.
  * This is used in new udev rules, released in udev v144, which selectively grant non-root users
    access to FireWire character device files of AV/C devices (camcorders, set top boxes, audio
    devices and more) and IIDC cameras (alias DCAM, industrial cameras and webcams) while other
    device types remain inaccessible to unprivileged users by default.
  * Be even more careful with ``Broadcast_Channel`` CSR accesses to avoid clashes with buggy
    firmwares.
  * Fixed rarely occurring bugs related to shutdown of isochronous DMA contexts and to
    DMA-mapping on platforms with non-cachecoherent DMA. (The latter fix introduced a regression
    into 2.6.31-rc1, fixed since 2.6.31-rc9.)

* ``firewire-net``

  * Added as new driver for IPv4 over 1394 for the new firewire stack, replacement of et1394 in
    the old stack. Both eth1394 and ``firewire-net`` are still considered experimental due to some
    remaining, though different, bugs in them.

* ``firewire-ohci``

  * Fix video reception on Ricoh R5C832.
  * Fix video reception from more than one camera simultaneously on Agere FW643.

* ``firewire-sbp2``

  * Added support for disks bigger than 2 TB. The necessary fix in our two SBP-2 initiator
    drivers has also been released in kernel 2.6.30.5 and 2.6.27.30.

    * Note, volume sizes bigger than 2 TB also require specific support in the SBP-2 target
      chipset of FireWire disk or RAID enclosures. This is true for any operating system as
      initiator, not just Linux. Check with your enclosure vendor if in doubt.

  * Fix potential crash after "status write for unknown orb" events.

* sbp2

  * Added support for disks bigger than 2 TB. See remarks at ``firewire-sbp2``.

Linux 2.6.30 (9 June 2009)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* Most of the changes relate to extensions to the ``<linux/firewire-cdev.h>`` API which are
  required for advanced usage by FireWire-enabled userspace applications, especially IIDC video
  capture.  * With these updates, the newer firewire drivers are now superior to the older
  ieee1394 drivers in the fields of industrial video acquisition/ machine vision/ microscopy
  etc. — just like the new drivers have already been superior and preferred for mass storage
  (SBP-2) in the last two or three kernel releases.
* (Regarding consumer video applications, the new drivers should now be functionally on par with
  — yet more secure than — the old drivers. Alas the new drivers cannot be used with studio audio
  equipment yet. IP networking with the new drivers has become available in kernel 2.6.31.)

* ``firewire-core``

  * Optionally expose the reception timestamp of each isochronous packet, not just of interrupt
    packets. This change is accompanied by an update of the constant ``FW_CDEV_VERSION`` from 1
    to 2.
  * Add ioctls for isochronous resource management (allocation and deallocation of isochronous
    channels and bandwidth). These do not only accomplish what the corresponding libraw1394
    functions can do, they also implement optional kernel-assisted reallocation and deallocation.
    This means that client programs do not need to implement reallocation in their bus reset
    handler anymore and often can get rid of bus reset handlers entirely. Also, isochronous
    resources can be released by the kernel if the client program crashes or shuts down
    improperly. The kernel-assisted variant of resource allocation also takes care of the grace
    period which is to be observed after bus resets.
  * Add ioctl to query the maximum transmission speed to/from a given node.
  * Add ioctl for broadcast write requests. This is for example useful to control multiple
    similar cameras at once. For device security reasons, broadcast write requests are
    restricted to addresses in Units Space.
  * Add ioctl for asynchronous stream transmission. Asynchronous streams are addressed to
    channels instead of nodes (like isochronous streams are tied to channels) but transmitted
    after asynchronous bus arbitrations (like asynchronous write requests, unlike isochronous
    streams).
  * Add various consistency checks to enforce proper cdev API usage.
  * Disallow the ``FW_CDEV_IOC_ADD_DESCRIPTOR`` ioctl on any other ``/dev/fw*`` than those of
    local nodes. This is because userland will typically maintain an access policy based on unit
    directories that are present on each node, and this ioctl may therefore influence
    accessibility of local nodes' device files.
  * Implement ``Broadcast_Channel`` register support for conformance with the 1394a bus
    management specification.

* ``firedtv``

  * Implement tuning of DVB-S2 boxes. Also implemented in kernel 2.6.29.1. This fixes tuning of
    standard definition channels. Reception of high definition channels is not yet implemented.

Linux kernel version 2.6.2x
---------------------------

Linux 2.6.29 (23 March 2009)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``dv1394``

  * Fix potential problem with interrupt control on big endian CPUs.
  * Remove unnecessary messages in the kernel log if the driver is loaded but unused.

* ``ieee1394``

  * Support 1600 Mb/s and 3200 Mb/s capable hardware. Previously there was a limit to 800 Mb/s.
    (``firewire-core`` had no such limit.)

* ``ohci1394``

  * Work around "irq...: nobody cared" and interrupt storm during resume after system suspend.
  * Increase number of hardware-assisted transmission retries when responder nodes are busy.
    Fixes AV/C control failures of camcorders with dvgrab ("send oops") and kino (loss of AV/C
    control), and possibly with other devices and software as well. Also fixed in 2.6.28.5 and
    2.6.27.16.

* ``sbp2``

  * Synchronize device quirk detection and handling with the code in the sibling driver
    ``firewire-sbp2``.
  * Add workarounds for 2nd and 3rd generation iPods. 2nd generation was found to need a request
    size limitation, 3rd generation reported a wrong capacity. This resulted in unrecoverable IO
    errors right after an affected iPod was plugged in. Also fixed in 2.6.28.5 and 2.6.27.16.

* ``firedtv``

  * New driver for FireWire-attached DVB receiver boxes and cards from Digital Everywhere, known
    as FireDTV and FloppyDTV.
  * This driver currently works together with the old 1394 driver stack only (``ieee1394`` +
    ``ohci1394``); compatibility with the new stack (``firewire-core`` + ``firewire-ohci``) will
    probably follow in the next kernel release. Also, only standard definition channels are
    supported for now; HD cannot be received yet.
  * The driver works with the DVB-C, -S, -S2, -T variants of FireDTV and FloppyDTV and also
    supports their remote control and Conditional Access Modules. The driver is meant to be used
    together with any viewer software which supports Linux' DVB programming interface, just like
    PCI or USB DVB receivers.

* ``firewire-core``

  * Fix potential crash in rapid succession of bus resets.
  * Do not detach protocol drivers (``firewire-sbp2`` or userspace driver programs) if devices
    briefly disappear or seem to disappear from the bus. This happens

    * when certain bus-powered hubs are plugged in,
    * when certain devices are plugged into 6-port hubs,
    * when certain disk enclosures are switched from self-power to bus power or vice versa and
      break the daisy chain during the transition,
    * when certain hubs temporarily malfunction during high bus traffic.

  * Fix rare bugs related to module unloading and to errors during card initialization.

* ``firewire-ohci``

  * Avoid "context_stop: still active" noise in the kernel log.
  * Increase number of hardware-assisted transmission retries when responder nodes are busy.
    Fixes AV/C control failures (like in ``ohci1394``). Also fixed in 2.6.28.5 and 2.6.27.16.

* ``firewire-sbp2``

  * Fix IOMMU resource exhaustion in an error path. Also fixed in 2.6.28.5 and 2.6.27.16.
  * Add workarounds for 2nd and 3rd generation iPods (like in ``sbp2``). Also fixed in 2.6.28.5 and
    2.6.27.16.

Linux 2.6.28 (24 December 2008)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``dv1394``

  * Change locking in the mmap() handler to prevent an unlikely deadlock.

* ``raw1394``

  * Change locking in the mmap() handler to prevent an unlikely deadlock of multithreaded client
    programs. (It nonetheless is not a good idea to use the same ``raw1394`` file handle in
    multiple threads; it may be hard to get such a client right.)
  * Change locking in the write() handler to make it multithreading-safe. (But see above.)
  * Remove the `Big Kernel Lock <http://lwn.net/Articles/86859/>`_ from the ioctl() handler for
    better system performance.

* ``ieee1394``

  * Fix corruption of CSR response handler list (ARM handlers in ``raw1394`` terminology) on
    boxes with more than one FireWire controller.
  * Do not detach the sbp2 driver if devices briefly disappear or seem to disappear from the bus.
    This happens

      * when certain bus-powered hubs are plugged in,
      * when certain disk enclosures are switched from self-power to bus power or vice versa and
        break the daisy chain during the transition,
      * when the user plugs a cable out and quickly plugs it back in, e.g. to reorder a daisy
        chain (works on Mac OS X if done quickly enough),
      * when certain hubs temporarily malfunction during high bus traffic.

  * Previously, mounted filesystems on FireWire disks would have been lost at such occasions. But
    now there is a high chance that they stay accessible.
  * Fix recognition of Freecom FireWire Harddrive. (also in 2.6.27.10)

* ``sbp2``

  * Add quirk handling for some iPod mini. (also in 2.6.27.8)

* ``firewire-core``

  * Fix kernel freeze after many bus resets. (also in 2.6.27.5)
  * Fix memory leak at bus reset. (also in 2.6.27.5)
  * Fix iso transmit parameters in the character device file interface. (also in 2.6.27.5)

* ``firewire-ohci``

  * Fix IOMMU resource leak, e.g. visible as "DMA: Out of SW-IOMMU space" on EM64T boxes and
    subsequent I/O errors. (also in 2.6.27.10)
  * Fix a memory leak at module removal.

* ``firewire-sbp2``

  * Improve login and logout handling. (also in 2.6.27.5)
  * Add quirk handling for some iPod mini. (also in 2.6.27.8)

Linux 2.6.27 (9 October 2008)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``dv1394``, ``raw1394``, ``video1394``

  * Include mmap()ed isochronous data buffers in program crash dumps.

* ``ieee1394``

  * Fix regression since Linux 2.6.25: When new nodes were added to a bus with existing ones,
    driver updates were not prioritized like in previous kernels. This especially degraded SBP-2
    reconnection.
  * Fix connection loss to old nodes when certain devices were plugged into a bus with a 6-port hub.

* ``sbp2``

  * Spin disks down (i.e. switch spindle motor off) when the system is suspended or shut down, or
    when the driver is unloaded.
  * Fix disk spin-down for PL-3507 and TSB42AA9 firmwares.
  * Fix connection loss after "Failed to reconnect to sbp2 device" during bus reset series.

* ``firewire-core``

  * IEEE 1394(a) compliance fixes: Don't respond to broadcast write requests, implement
    ``Broadcast_Channel`` register. (Not yet done: Allocate broadcast channel.)
  * Fix a kernel panic during asynchronous transmission when a bus reset occurs.
  * Fix reception of block read responses on 64bit architectures.
  * Fix a kernel warning (call trace dump) in the bus reset handling.

* ``firewire-ohci``

  * Fix isochronous reception with TSB43AB22A controllers on 64bit architectures with more than 2GB memory.

* ``firewire-core`` + ``firewire-ohci``

  * The issue with dvgrab on VIA VT630x OHCI 1.0 cards has been resolved. (DV reception got stuck
    after one or a few frames, the IR DMA context could not be woken up anymore.) The actual
    kernel change which resolved this is not known.

* ``firewire-sbp2``

  * Spin-down feature and fixes as in sbp2

* Sbp2's and ``firewire-sbp2`` 's spin-down feature is not active in multiple initiator setups, i.e. when
  non-exclusive login is configured.

Linux 2.6.26 (13 July 2008)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``ieee1394``

  * Fix speed detection with some GOF repeaters.
  * The driver ``raw1394,`` ``video1394``, ``dv1394`` are not bound to struct device instances
    anymore. This change is only important for driver programmers. It is for example necessary
    for the firesat DVB driver which is currently in the works at the Linux Driver Project.

* ``ohci1394``

  * Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.

* ``raw1394``

  * Change of isochronous transmit policy: If the controller skips a cycle e.g. because of
    transmit FIFO underflow, the respective packet is now requeued for transmission in the next
    cycle instead of being dropped.
  * Related change of semantics of the struct ``raw1394_iso_status.overflows`` field: upper 16
    bits contain number of cycle skips in IT (see above), lower 16 bits contain the "overflows"
    value as before.

* ``firewire-core``

  * Properly rescan devices which changed their configuration ROM. This fixes soft-power-off of
    some FireWire harddisks and similar situations in which the drivers missed that a device went
    on or off.
  * Fixes: Bus reset loop after PHY config packet transmission; gap count synchronization between
    all nodes (device detection related); kernel panic due to unexpected reception of PHY packets.
  * After a device was removed, fail ``open()``, ``ioctl()``, ``mmap()`` properly with
    ``-ENODEV``.

* ``firewire-ohci``

  * New runtime switch to enable verbose logging in dmesg:
    ``echo N > /sys/module/firewire_ohci/parameters/debug`` with N = 0: off (default), 1:
    asynchronous packet sent or received, 2: self IDs, 4: interrupts, 8: bus reset interrupt
    events, or a combination (sum) of several of these flags.
  * fixes for asynchronous transactions on Texas Instruments controllers
  * fixes to make JMicron based cards work
  * Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
  * stricter error checks in self ID reception
  * new compile-time option ``FIREWIRE_OHCI_REMOTE_DMA`` in the ``Kernel hacking`` menu of the
    kernel configuration for remote debugging, only interesting to kernel developers

* ``firewire-sbp2``

  * Fix detection of some multi-unit devices, e.g. drives in a SONY DVD jukebox.

* **Known issues:** The new firewire drivers are still unable to capture DV on VIA VT630x OHCI
  1.0 chips. Support for isochronous resource management is still missing in the ``firewire-core``
  character device API. IP over 1394 implementation equivalent to eth1394 is still not available
  for the new stack.

Linux 2.6.25 (16 April 2008)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``sbp2``

  * Raise default size limit of requests for better throughput. This brings ``sbp2`` performance
    on par with ``firewire-sbp2`` on FireWire 800 buses. Alas some older devices cause I/O errors
    on large requests, but the known broken ones are detected and handled accordingly. If you
    encounter errors with 2.6.25 which didn't happen in previous kernels, this change may be the
    cause; please report it at ``linux1394-devel`` then.
  * Fix bogus device additions if rescan-scsi-bus.sh was run. Note, this script is not necessary
    and even was detrimental with sbp2 in the 2.6 kernel series.
  * Add workaround flag for delay between login and inquiry, flag is active for DViCO FX-3A.

* ``firewire-core``

  * Fixes for ``giving up on config rom`` errors.
  * Fix ``kobject_add failed for fw* with -EEXIST``.
  * Fix kernel crash when ``firewire-ohci`` was unloaded.

* ``firewire-ohci``

  * Fix isochronous reception for IIDC cameras.
  * Fix for systems with more than 3 GB RAM.
  * Fix for systems with IOMMU.
  * Fix for big endian CPUs.
  * Fix module reloading and suspend/resume on Apple PowerMac and PowerBook.
  * Add support for the old Apple UniNorth rev.1 controller.
  * Fix kernel panic in asynchronous transmission.
  * Handle ``cycle too long`` condition.

* ``firewire-sbp2``

  * Several fixes and improvements for device recognition, probing, and reconnection.
  * Fix I/O errors which happened as soon as the PCI bus became slightly busy. Affected were all
    SBP-2 chipsets except OxSemi ones. This fix is especially required for PL-3507 based devices.
  * Fix bugs caused by rescan-scsi-bus.sh.

* ``init_ohci1394_dma``

  * This is a new standalone driver, independent of the ieee1394 and firewire driver stacks. It
    is used for kernel development, particularly remote debugging of kernel initialization. This
    driver is configured by a kernel build config option in the ``Kernel hacking`` menu and a
    kernel boot parameter. Documentation is provided in the documentation directory of the kernel
    sources. Driver author is Bernhard Kaindl.

* **Known issues:** Regression in ``ieee1394``: When new nodes are added to a bus with existing
  ones, driver updates are not prioritized like in previous kernels. This especially degrades
  SBP-2 reconnection. Fixed in Linux 2.6.27.

Linux 2.6.24 (24 January 2008)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``eth1394``

  * Fix locking in a rare error case.

* ``ieee1394``

  * Fix small memory leak after ``eth1394`` or ``raw1394`` modified the local configuration ROM.

* ``firewire-core``

  * Adopt ``read cycle timer`` ABI like in ``raw1394`` since kernel 2.6.21.

* ``firewire-ohci``

  * Fix I/O after suspend/resume cycle for protocols which need the onfiguration ROM.
  * Fix leak of DMA mapping tables on non-coherent machines.
  * Check for unlikely error cases: PCI write posting error, self ID malconfiguration.
  * Fix DV reception for a lot of controllers. Note, a few OHCI 1.0 variants of VIA VT630x still
    don't work for DV.

* ``firewire-sbp2``

  * Add support for targets with multiple logical units, e.g. JBOD multi-disk enclosures.
  * Add module load parameter "workarounds" for emergencies. This parameter works just like in
    the classic ``sbp2`` driver.
  * Fix blocking of keyboard input and other system functions during attachment of devices.

* sparc64 architecture

  * Fix kernel oops in DMA mapping, notably when loading ``firewire-ohci``. This bug was present
    since kernel 2.6.23.

* **Known issues:** The new firewire stack is still considered experimental. There are several
  bugs in isochronous reception which especially affect ``libdc1394``. These should be fixed in
  kernel 2.6.25-rc1. There are also lots of issues with ``libraw1394`` 's interface to the new drivers
  and regarding compatibility with existing applications. Also, ``firewire-sbp2`` does not yet handle
  bus resets well enough. And work on an IP over 1394 implementation equivalent to ``eth1394`` has
  not yet started.

* Linux 2.6.24.1 fixes an "INFO: possible recursive locking detected" warning which appeared in
  the kernel log e.g. when using dvgrab or firecontrol. The issue was harmless and not caused by
  the firewire drivers.

Linux 2.6.23 (9 October 2007)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``ieee1394``

  * Properly terminate sysfs attributes ``vendor_name_kv`` and ``model_name_kv``.

* ``ohci1394``

  * Fix initialization on some hardware (some Toshiba Satellite in particular) in non-modular
    builds. This was a regression since Linux 2.6.19. Also fixed in Linux 2.6.22.9.

* ``raw1394``

  * Now almost completely fixed for 32bit userland on 64bit kernels. (There remain issues in the
    rarely used address range mapping functions.)
  * The long deprecated 1st generation isochronous ABI, consisting of the request types
    ``RAW1394_REQ_ISO_LISTEN`` and ``_SEND``, have been removed. Callers of ``libraw1394`` 's
    undocumented functions ``raw1394_iso_write``, ``raw1394_start_iso_write``,
    ``raw1394_start_iso_rcv``, and ``raw1394_stop_iso_rcv`` are affected. Only ancient and
    obsolete programs used these calls which have been replaced by the more efficient rawiso and
    ``video1394`` ABIs.

* ``sbp2``

  * Fix crash in ``sbp2`` initialization on PPC64. This was a regression since Linux 2.6.22. Also
    fixed in Linux 2.6.22.2.
  * Expose the ``IEEE1394_SBP2_PHYS_DMA`` compile-time option on x86-64.

* ``firewire-core``

  * Add support for S100B...S400B and link speed slower than PHY speed.
  * Optimize bandwidth (gap count) in mixed 1394a/1394b topologies, except with 1394b repeater
    nodes present.
  * Fix memory leak. Also fixed in Linux 2.6.22.2.

* ``firewire-ohci``

  * Fix scheduling in atomic context. Also fixed in Linux 2.6.22.2.
  * iBook G3 and older Powerbooks refused to suspend. Also fixed in Linux 2.6.22.9.
  * Fix panic on module unloading while devices were attached.

* ``firewire-sbp2``

  * Fix "status write for unknown orb" followed by I/O errors.
  * Make it work on CardBus FireWire cards. Also fixed in Linux 2.6.22.2.
  * Port from the old sbp2 driver: Limit sector count for certain old chipsets. Add module load
    parameter ``exclusive_login``.

Linux 2.6.22 (8 July 2007)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``eth1394``

  * Do not auto-load ``eth1394`` per hotplug whenever a FireWire controller is initialized
    (usually: when ``ohci1394`` is loaded). Hotplug events (uevents) for eth1394 are now only
    generated if another IPv4-over-1394 capable node was detected on a FireWire bus.
  * From now on, those who want eth1394 have to load it manually, or simply connect another
    IPv4-over-1394 capable node (e.g. a PC with Windows XP or OS X), or add ``eth1394`` to a
    distribution-dependent list of modules to be loaded on boot, or can simulate the old
    auto-loading together with ohci1394 by the following addition to ``/etc/modprobe.conf``:
    ``install ohci1394 /sbin/modprobe eth1394; /sbin/modprobe --ignore-install ohci1394``
  * Fix silent packet loss when eth1394 was unable to obtain transaction labels from ieee1394.
    The bug was noticeable by "eth1394: No more tlabels left" kernel messages.
  * Send GASP packets at S100 if 1394b hardware is present. Fixes eth1394 for S100B...S400B
    interconnects.
  * Allow users to configure MTU bigger than 1500 if they know what they are doing.
  * Link to a parent device (instead of a virtual parent) in sysfs. This fixes a regression since
    Linux 2.6.21: Udev rules for persistent naming of network interfaces didn't work anymore. The
    fix is also available in Linux 2.6.21.5 and later.

* ``ieee1394``

  * The values of the sysfs attribute ``address`` of unit directories were wrong.

* raw1394

  * Send asynchronous streams at S100 rather than at a random speed.

* sbp2

  * Optimized DMA direction. Fixes crash on Xen.
  * New module load parameter: ``long_ieee1394_id``. If left at the default value, nothing
    changes. If set to ``y``, the format of ``/sys/bus/scsi/devices/*:*:*:*/ieee1394_id`` is
    changed from e.g. ``0001041010004beb:0:0`` to ``0001041010004beb:00042c:0000``. This longer
    form is equivalent to the concatenation of the so-called Target Port Identifier and Logical
    Unit Identifier as per SCSI Architecture Model. The main benefit is that the same format is
    also used in the new ``firewire-sbp2`` driver. (Explanation: The ``ieee1394_id`` in sysfs is
    typically used to create persistently named links in /dev/disk/by-id/. I.e. you can add
    entries like
    ``/dev/disk/by-id/ieee1394-0001041010004beb:00042c:0000-part3  /mnt/cx1  hfsplus user,noauto,noatime,force 0 0``
    to ``/etc/fstab``. With this example you can mount /mnt/cx1 without having to worry whether
    it's ``/dev/sda`` or ``sdb`` or whatever this time you plugged the FireWire disk in. This
    feature already existed in older kernels, only the format of the ID changed slightly in 2.6.22.)

* **New alternative driver stack in Linux 2.6.22 (experimental, incomplete):**

  * ``firewire-core``

    * This is a new driver, part of the new alternative FireWire driver stack known under the
      nickname ``Juju``, written by Kristian Høgsberg. Functionality-wise, ``firewire-core`` is a
      replacement for ``ieee1394``, ``raw1394``, ``video1394``, and ``dv1394``.

  * ``firewire-ohci``

    * the new driver stack's equivalent to ``ohci1394``

* ``firewire-sbp2``

  * the new driver stack's equivalent to ``sbp2``

* See Juju Migration and
  `http://marc.info/?l=linux1394-user&m=118401466928264 <http://marc.info/?l=linux1394-user&m=118401466928264>`_
  for additional notes on ``firewire-core``, ``firewire-ohci``, and ``firewire-sbp2``. More documentation on
  the new drivers will be gradually added to this Wiki.
* **Known issue:** Sbp2 crashes on G5 Powermacs. Kernels older than 2.6.22 do not contain the
  bug. Fixed in Linux 2.6.22.2.

Linux 2.6.21 (25 April 2007)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``dv1394``

  * fixed driver crash on CardBus card ejection (also fixed in Linux 2.6.20.5)

* ``ieee1394``

  * fixed resume after suspend or hibernation: the local config ROM was not restored which broke
    protocols like SBP-2 and IP over 1394
  * fixed driver crash or kernel crash if ``ieee1394`` was loaded with parameter
    ``disable_nodemgr=1`` (new bug in Linux 2.6.20, fix is also in 2.6.20.2)
  * removed the kernel configuration options to export unused symbols for potential out-of-tree
    drivers and to translate OUIs into company names in sysfs

* ``raw1394``

  * added feature to simultaneously read the cycle timer and the local system time (At the time
    of the kernel's release, the ``libraw1394`` counterpart was in ``libraw1394`` 's Subversion
    repo, pending for the next ``libraw1394`` release)

* ``video1394``

  * now works on machines with non-coherent DMA, e.g. Intel 64bit machines (also fixed in
    2.6.20.2)

* EM64T, IA64

  * fixed kernel crash related to DMA operations in a lot of drivers, among them ``video1394``
    and ``raw1394``, on Intel 64bit machines with more than ~3GB RAM (also fixed in Linux
    2.6.19.6 and 2.6.20.2)

Linux 2.6.20 (4 February 2007)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``dv1394``

  * add deprecation note, application software should migrate to ``raw1394``

* ``ieee1394``

  * set proper symlinks at ``/sys/bus/ieee1394/driver/*/module``

* ``ohci1394``

  * fix kernel oops and strange hardware faults on some PPC machines when the module was reloaded
    (fix also in 2.6.19.2)

* ``sbp2``

  * fix recognition of capabilities of some DVD-ROM/R/W (fix also in 2.6.19.3; only Linux
    2.6.19...2.6.19.2 are affected)
  * fix handling of SCSI command ``REQUEST_SENSE``

* **Developer information:** Linux 2.6.20 is the last release within which rather stable
  ``ieee1394`` APIs for kernel drivers are maintained. Starting with Linux 2.6.21, developers
  of out-of-tree kernel drivers for FireWire hardware may be faced with more or less drastic
  changes of the kernel-internal APIs. (This does not affect userspace drivers which are built
  on top of ``libraw1394``, ``libdc1394`` and so on.)
* **Known issue:** The ``ieee1394`` option ``disable_nodemgr=1`` will lead to nonfunctional
  FireWire subsystem or even kernel lockup. This regression has been fixed in 2.6.20.2. Kernels
  before 2.6.20 do not contain the bug.

Linux kernel version 2.6.1x
---------------------------

Linux 2.6.19 (29 November 2006)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``eth1394``

  * memory alignment problem fixed

* ``ieee1394``

  * recursive locking fixed
  * optimization of per-host kernel data structures; this apparently also fixed a kernel crash in
    ``hpsb_get_tlabel``

* ``ohci1394``

  * initializes before most other device drivers to aid kernel debugging with firescope

* ``raw1394``

  * kernel freeze in address range mapping functions fixed

* ``sbp2``

  * HDDs whose motor was stopped after idle time or by another host are now automatically spun up
  * IO errors caused by ``sbp2util_node_write_no_wait failed`` fixed
  * another potential deadlock during device removal fixed
  * some combinations of Initio bridges and HDD mechanisms were wrongly detected as write
    protected; fixed by using a more standards conforming command for ``sd_mod`` 's probing

* ``video1394``

  * poll() support added

* **Known issue:** Some DVD-ROM/RW were mistaken for CD-ROM. Fixed in 2.6.19.3.

Linux 2.6.18 (19 September 2006)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``ieee1394``

  * less CPU usage in DMA housekeeping
  * support for S100...S400 1394b hardware and for devices with PHY faster than link

* ``ohci1394``

  * recover from ``cycle too long`` errors

* ``sbp2``

  * spin up Maxtor OneTouch disks when necessary (also in 2.6.17.8)

* Among the rest of the changes are minor bug fixes, small changes to in-kernel API usage, and a
  small ieee1394 low-level API extension (for driver developers: two new members in
  ``struct hpsb_host`` which affect address range mapping).
* **Known issue:** If the kernel is configured for ``RW-sem debugging``, a ``recursive locking``
  warning in knodemgrd may appear in the kernel log. This is an old bug, but probably without
  practical impact. Fixed in 2.6.19.

Linux 2.6.17 (17 June 2006)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``ieee1394``

  * Removed the dormant support for devfs

* ``ohci1394``

  * PhyUpperBound lowered from ~256 TB to 1 TB on chips which support a programmable
    PhyUpperBound

* ``raw1394``

  * 64bit compatibility code for read and write access to ``/dev/raw1394`` (not yet for ioctls)

* ``sbp2``

  * Fix kernel freeze after disconnecting a device. The fix is also available in Linux 2.6.16.2.
  * Fix compatibility regression with PL-3507 since Linux 2.6.16 (``scsi_add_device failed``).
    Also available in 2.6.16.20.
  * Added a workaround for iPods (fixes ``end_request: I/O error`` at blocks near the end of the
    disk). Also available in 2.6.16.20.
  * Added module load parameter ``workarounds``. A numeric parameter which signifies a
    combination of workarounds for quirky hardware can be given. See "modinfo sbp2". The now
    redundant parameter ``force_inquiry_hack`` will be removed in a future release.
  * Disabled ``modprobe -r ohci1394`` (or pcilynx) while logged in into an SBP-2 device,
    preventing inadvertent loss of connection.

Linux 2.6.16 (19 March 2006)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* The bulk of changes to the IEEE 1394 subsystem since Linux 2.6.15 constitutes of
  behind-the-scenes cleanups, but there were also several bug fixes.
* ``amdtp``, ``cmp``

  * These drivers were removed from the kernel. Their functionality is provided by
    ``libiec61883`` now.

* ``ieee1394``

  * Bug fix: Suspend-to-disk would deadlock if the swap partition was located on a FireWire disk.
  * Reconnection to storage devices is often quicker now when additional devices get plugged in.
  * small consistency checks added to ROM parsing routines

* ``ohci1394``

  * logs number of hardware-implemented isochronous contexts when starting

* ``raw1394``

  * bug fixes for memory deallocation in config ROM manipulation routines

* ``sbp2``

  * Bug fix: Sbp2 always failed to connect to storage devices with ``login timed out`` with ALi
    and Fujitsu host adapters. This bug was believed to date back to the Mingh dynasty.
  * Bug fix: When a device was unplugged during ongoing I/O, the subsystem could fall into a
    deadlock, disabling subsequent hotplugs. (Fix is also available in Linux 2.6.15.5.)
  * Bug fix: The 36byte inquiry hack did not work in the last few Linux releases.
  * Bug fix: Resources were not freed when SCSI inquiry failed.
  * SCSI commands are no longer converted between command sets. The SCSI command set drivers,
    especially sd, are now using the proper command set.
  * Responses to inquiry commands from userspace sg I/O are now passed through as-is.

* ``scsi``/``sd`` (as far as related to ``sbp2``)

  * Bug fix: Memory corruption was encountered when FireWire disks with Initio bridge chip or
    some other bridge chips were plugged in. Could cause error messages, application crashes,
    or kernel panic. (Fix is also available in Linux 2.6.15.5.)

* ``video1394``

  * Bug fix: Wrong timestamps were generated. (bug from Linux 2.6.11)
  * Bug fix: When an ioctl failed to get a free channel, a wrong error number was returned.

* several drivers

  * numerous code cleanups without change in functionality (or so we hope)
  * When starting, ``eth1394``, ``ohci1394``, and ``sbp2`` do not log a version number anymore.
    There is no way to keep a meaningful version number without strictly centralized development
    model.
  * 1394 subsystem enabled in arch/x86_64/defconfig

* **Known issue:** Some storage devices based on Prolific PL-3507 were not accessible anymore.
  Fixed in 2.6.16.20 and 2.6.17.

Linux 2.6.15 (2 January 2006)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``ieee1394``

  * Fix recognition of some pre-1394a devices, notably LSI based SBP-2 devices. ``ieee1394`` now
    writes the broadcast channel register only to devices which actually support the register.
    Fixes also an interoperability regression of Linux 2.6.14.
  * Fix recognition of some devices after the PC was switched off and on, notably of Motorola
    DCT6200. ``ieee1394`` posts one resume packet to wake up suspended remote ports.

* ``pci``

  * Workaround for FireWire controller of several Toshiba notebooks.

* ``sbp2``

  * Fix for occasional oops during command abortion.

* ``scsi``/``sd``

  * Fix panic or oops when runing the eject command on an iPod. Fix is also available in
    Linux 2.6.14.5.

Linux 2.6.14 (27 October 2005)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* ``raw1394``

  * fix for deadlocks on SMP machines

* ``eth1394``

  * workaround for 1394b cards, required on some architectures

* ``ieee1394``

  * bus reset handling slightly changed, helps to detect new devices after a cycle master
    related reset
  * MODALIAS variable provided to hotplug userspace scripts

* ``sbp2``

  * ``serialize_io=1`` is now default, for better interoperability (add ``options sbp2
    serialize_io=0`` to ``/etc/modprobe.conf`` for optimum performance of 1394b disks)
  * fix for hangs of the ieee1394 and scsi subsystems when devices were unplugged, fix for
    ``modprobe -r sbp2`` (these fixes are also present in Linux 2.6.13.4)

Linux 2.6.12 (17 June 2005)
^^^^^^^^^^^^^^^^^^^^^^^^^^^

* Linux Kernel 2.6.12 contains a major upgrade for IEEE 1394. This is arguably the first stable
  version of Linux 1394 for 2.6 (your mileage may vary). Not only does it contain many bug fixes
  resolving all known kernel warnings, it also fixes multi-LUN support for sbp2 and contains new
  sysfs entries to support udev rules for the generic setup of ``/dev`` nodes. See our new FAQ
  item for example udev rules.