522:
956:
29:
468:
HAL as it has "become a large monolithic unmaintainable mess". The process is largely complete, but some use of HAL remains – Debian squeeze (Feb 2011) and Ubuntu version 10.04 remove HAL from the basic system and boot process. In Linux, it is in the process of being merged into
338:. As a result, devices are discovered or change state in ways which can be difficult to track through the system call interface or Unix IPC. The complexity of doing so forces application authors to re-implement hardware support logic.
341:
Some devices also require privileged helper programs to prepare them for use. These must often be invoked in ways that can be awkward to express with the Unix permissions model (for example, allowing users to join
362:
HAL is a single daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host computer. Applications communicate with HAL through the
322:
Computer hardware, however, has increased in complexity and the abstractions provided by Unix kernels have not kept pace with the proliferating number of device and
1127:
473:(main udev, libudev, and udev-extras) and existing udev and kernel functionality. The replacement for non-Linux systems such as FreeBSD is devd.
480:
was planned to replace certain aspects of HAL, but in March 2009, DeviceKit was deprecated in favor of adding the same code to udev as package
790:
319:
in order to communicate with hardware through these abstractions. This sufficed for the simple hardware of early desktop computing.
1122:
576:
HAL is licensed to you under your choice of the
Academic Free License version 2.1, or the GNU General Public License version 2
527:
402:
on these objects; applications can listen for signals and react to the hardware events that they signify—events such as a
16:
This article is about a UNIX-like operating system subsystem. For the general concept and the
Windows NT kernel HALs, see
383:
is represented as a D-Bus object, and its bus address is used as a unique identifier. Devices include abstractions like
1107:
873:
768:
141:
292:
kernel HALs, which handle some platform-specific core functionality within the kernel, such as interrupt routing.
853:
354:
to provide their own access control and privilege separation, potentially introducing security holes each time.
589:
245:
1112:
799:
783:
307:
was responsible for providing an abstract interface to the hardware the system ran on. Applications used the
1060:
366:
72:
278:
158:
122:
449:
304:
714:
1132:
1117:
1002:
776:
739:
1027:
229:
Some other operating systems which don't have an alternative like udev or devd still use HAL.
373:
370:
282:
162:
1065:
241:
233:
212:
17:
8:
964:
868:
425:
270:
226:
on Linux as of 2008–2010 and devd on FreeBSD. Previously, HAL was built on top of udev.
42:
Please help update this article to reflect recent events or newly available information.
1047:
1017:
863:
858:
351:
129:
346:
only if they are logged into the video console). Application authors resort to using
883:
384:
237:
798:
1086:
977:
906:
811:
387:
and visible wireless networks. The device's functionality is exposed through D-Bus
343:
335:
301:
255:
153:
101:
803:
614:
595:
327:
259:
146:
955:
689:
569:
1081:
693:
403:
222:
on most Linux distributions and on FreeBSD. Functionality is being merged into
440:
rule to allow the udev daemon to notify HAL whenever new device nodes appear.
1101:
274:
878:
461:
457:
433:
407:
331:
312:
465:
316:
308:
219:
118:
763:
173:
78:
987:
936:
931:
827:
668:
644:
323:
289:
992:
972:
664:
638:
477:
208:
1007:
997:
982:
832:
326:
types now common on both server and desktop computers. Most modern
204:
554:
1055:
941:
916:
110:
1022:
921:
890:
848:
512:
497:
453:
347:
114:
1012:
911:
502:
429:
420:
363:
263:
106:
926:
507:
470:
437:
232:
The purpose of the hardware abstraction layer was to allow
223:
134:
1037:
1032:
718:
267:
262:
project, and was a key part of the software stack of the
248:
251:, regardless of the type of the underlying hardware.
517:
460:
and on FreeBSD, and projects such as KDE, GNOME and
432:
systems) to discover hardware and listen for kernel
413:
410:spinning up or a laptop computer closing its lid.
369:mechanism, which abstracts the hardware behind an
59:Software subsystem for UNIX-like operating systems
1099:
436:events. Some Linux distributions also provide a
254:HAL for Linux OS was originally envisioned by
784:
633:
631:
548:
546:
544:
791:
777:
552:
628:
541:
1128:Software using the Academic Free License
715:"Revision 1206281: Features in KDE Base"
448:As of 2011, Linux distributions such as
587:
484:, and some functions have now moved to
1100:
772:
240:of the host system through a simple,
528:Free and open-source software portal
22:
288:HAL is unrelated to the concept of
13:
398:HAL broadcasts hardware events as
334:-capable and can have non-trivial
14:
1144:
1061:Open Collaboration Services (OCS)
757:
391:, and its state accessed through
954:
764:HAL - Hardware Abstraction Layer
740:"TechnicalOverview: HAL removal"
553:Pennington, Havoc (2003-07-10),
520:
414:Implementations and obsolescence
27:
277:, dual-licensed under both the
732:
707:
682:
657:
607:
581:
562:
1:
800:Free and open-source software
588:Zeuthen, David (2009-11-01),
534:
443:
311:interface, or performed file
571:HAL source code license text
395:, a set of key-value pairs.
295:
211:operating systems providing
7:
491:
201:Hardware Annotation Library
81:/ November 30, 2009
10:
1149:
1123:Human–computer interaction
279:GNU General Public License
197:Hardware Abstraction Layer
159:GNU General Public License
15:
1074:
1046:
963:
952:
899:
841:
820:
810:
556:Making Hardware Just Work
357:
168:
152:
140:
128:
100:
96:
71:
67:
36:This article needs to be
1108:Applications using D-Bus
742:. ubuntu.com. 2010-05-17
591:HAL 0.5.14 Specification
350:binaries or run service
236:to discover and use the
476:Initially a new daemon
1028:Video Acceleration API
464:are in the process of
379:Each logical hardware
83:; 14 years ago
690:"Features/HalRemoval"
406:being plugged in, an
283:Academic Free License
163:Academic Free License
1113:Free system software
271:desktop environments
234:desktop applications
213:hardware abstraction
18:Hardware abstraction
802:projects hosted by
426:virtual file system
418:On Linux, HAL uses
300:Traditionally, the
64:
62:
1095:
1094:
950:
949:
344:wireless networks
330:have also become
190:
189:
57:
56:
1140:
1087:Portland Project
958:
818:
817:
793:
786:
779:
770:
769:
751:
750:
748:
747:
736:
730:
729:
727:
726:
711:
705:
704:
702:
701:
686:
680:
679:
677:
676:
661:
655:
654:
653:
652:
635:
626:
625:
623:
622:
611:
605:
604:
603:
602:
585:
579:
578:
566:
560:
559:
550:
530:
525:
524:
523:
487:
483:
423:
302:operating system
256:Havoc Pennington
186:
183:
181:
179:
177:
175:
102:Operating system
91:
89:
84:
65:
61:
52:
49:
43:
31:
30:
23:
1148:
1147:
1143:
1142:
1141:
1139:
1138:
1137:
1133:User interfaces
1118:Freedesktop.org
1098:
1097:
1096:
1091:
1070:
1042:
959:
946:
895:
837:
806:
804:freedesktop.org
797:
760:
755:
754:
745:
743:
738:
737:
733:
724:
722:
713:
712:
708:
699:
697:
688:
687:
683:
674:
672:
663:
662:
658:
650:
648:
637:
636:
629:
620:
618:
615:"hal: doc/spec"
613:
612:
608:
600:
598:
596:freedesktop.org
586:
582:
568:
567:
563:
551:
542:
537:
526:
521:
519:
494:
485:
481:
446:
419:
416:
385:disk partitions
360:
298:
260:freedesktop.org
172:
147:System software
92:
87:
85:
82:
60:
53:
47:
44:
41:
32:
28:
21:
12:
11:
5:
1146:
1136:
1135:
1130:
1125:
1120:
1115:
1110:
1093:
1092:
1090:
1089:
1084:
1082:Create Project
1078:
1076:
1072:
1071:
1069:
1068:
1063:
1058:
1052:
1050:
1044:
1043:
1041:
1040:
1035:
1030:
1025:
1020:
1015:
1010:
1005:
1000:
995:
990:
985:
980:
975:
969:
967:
961:
960:
953:
951:
948:
947:
945:
944:
939:
934:
929:
924:
919:
914:
909:
903:
901:
897:
896:
894:
893:
888:
887:
886:
876:
871:
866:
861:
856:
851:
845:
843:
839:
838:
836:
835:
830:
824:
822:
815:
808:
807:
796:
795:
788:
781:
773:
767:
766:
759:
758:External links
756:
753:
752:
731:
706:
694:Fedora Project
681:
656:
627:
606:
580:
561:
539:
538:
536:
533:
532:
531:
516:
515:
510:
505:
500:
493:
490:
445:
442:
415:
412:
404:digital camera
359:
356:
297:
294:
258:. It became a
207:subsystem for
188:
187:
170:
166:
165:
156:
150:
149:
144:
138:
137:
132:
126:
125:
104:
98:
97:
94:
93:
77:
75:
73:Stable release
69:
68:
58:
55:
54:
35:
33:
26:
9:
6:
4:
3:
2:
1145:
1134:
1131:
1129:
1126:
1124:
1121:
1119:
1116:
1114:
1111:
1109:
1106:
1105:
1103:
1088:
1085:
1083:
1080:
1079:
1077:
1073:
1067:
1064:
1062:
1059:
1057:
1054:
1053:
1051:
1049:
1045:
1039:
1036:
1034:
1031:
1029:
1026:
1024:
1021:
1019:
1016:
1014:
1011:
1009:
1006:
1004:
1001:
999:
996:
994:
991:
989:
986:
984:
981:
979:
976:
974:
971:
970:
968:
966:
962:
957:
943:
940:
938:
935:
933:
930:
928:
925:
923:
920:
918:
915:
913:
910:
908:
905:
904:
902:
898:
892:
889:
885:
882:
881:
880:
877:
875:
872:
870:
867:
865:
862:
860:
857:
855:
852:
850:
847:
846:
844:
840:
834:
831:
829:
826:
825:
823:
819:
816:
813:
809:
805:
801:
794:
789:
787:
782:
780:
775:
774:
771:
765:
762:
761:
741:
735:
720:
716:
710:
695:
691:
685:
670:
666:
660:
646:
642:
641:
634:
632:
616:
610:
597:
593:
592:
584:
577:
573:
572:
565:
558:
557:
549:
547:
545:
540:
529:
518:
514:
511:
509:
506:
504:
501:
499:
496:
495:
489:
479:
474:
472:
467:
463:
459:
455:
451:
441:
439:
435:
431:
427:
422:
411:
409:
405:
401:
396:
394:
390:
386:
382:
377:
375:
372:
368:
365:
355:
353:
349:
345:
339:
337:
333:
329:
325:
320:
318:
314:
310:
306:
303:
293:
291:
286:
284:
280:
276:
275:free software
272:
269:
265:
261:
257:
252:
250:
247:
243:
239:
235:
230:
227:
225:
221:
216:
214:
210:
206:
202:
198:
194:
185:
171:
167:
164:
160:
157:
155:
151:
148:
145:
143:
139:
136:
133:
131:
127:
124:
120:
116:
112:
108:
105:
103:
99:
95:
80:
76:
74:
70:
66:
51:
39:
34:
25:
24:
19:
879:X.Org Server
744:. Retrieved
734:
723:. Retrieved
721:. 2010-12-19
709:
698:. Retrieved
696:. 2012-01-09
684:
673:. Retrieved
671:. 2011-06-28
665:"HALRemoval"
659:
649:, retrieved
647:, 2013-05-10
639:
619:. Retrieved
617:. 2010-03-16
609:
599:, retrieved
590:
583:
575:
570:
564:
555:
475:
447:
417:
408:optical disc
399:
397:
392:
388:
380:
378:
371:object-based
361:
340:
321:
317:device nodes
299:
287:
253:
231:
228:
217:
200:
196:
192:
191:
48:January 2024
45:
37:
482:udev-extras
466:deprecating
376:mechanism.
309:system call
218:HAL is now
174:freedesktop
119:OpenSolaris
1102:Categories
1048:Frameworks
988:Fontconfig
937:pkg-config
932:PackageKit
828:PulseAudio
814:components
746:2017-01-15
725:2017-01-15
700:2017-01-15
675:2017-01-15
669:debian.org
651:2017-01-15
645:ubuntu.com
640:Halsectomy
621:2017-01-15
601:2017-01-15
535:References
444:Deprecated
393:properties
389:interfaces
336:topologies
324:peripheral
290:Windows NT
220:deprecated
199:or rather
88:2009-11-30
1066:Telepathy
993:GStreamer
973:AppStream
965:Libraries
478:DeviceKit
296:Rationale
273:. It is
209:UNIX-like
180:/Software
1075:Meetings
1008:HarfBuzz
998:libinput
983:FreeType
869:Plymouth
842:Graphics
833:PipeWire
492:See also
488:proper.
281:and the
246:abstract
242:portable
238:hardware
205:software
130:Platform
1056:CppUnit
1018:Poppler
1003:Mesa 3D
942:Systemd
917:Flatpak
874:Wayland
864:nouveau
859:Enchant
434:hotplug
400:signals
352:daemons
332:hotplug
203:) is a
169:Website
154:License
123:Solaris
111:FreeBSD
86: (
38:updated
1023:Swfdec
922:Kmscon
891:Xephyr
884:Glamor
849:Compiz
513:UPower
498:devfsd
458:Fedora
456:, and
454:Debian
450:Ubuntu
381:device
358:Design
348:setuid
305:kernel
115:NetBSD
79:0.5.14
1013:Pango
978:Cairo
912:D-Bus
907:Avahi
900:Other
821:Sound
503:eudev
462:X.org
430:Linux
364:D-Bus
328:buses
264:GNOME
178:/wiki
107:Linux
927:luit
508:udev
486:udev
471:udev
438:udev
428:for
421:/sys
266:and
244:and
224:udev
182:/hal
176:.org
161:and
142:Type
135:UNIX
1038:Xft
1033:XCB
854:DRI
719:KDE
424:(a
374:RPC
367:IPC
315:on
313:I/O
268:KDE
249:API
193:HAL
63:HAL
1104::
812:OS
717:.
692:.
667:.
643:,
630:^
594:,
574:,
543:^
452:,
285:.
215:.
121:,
117:,
113:,
109:,
792:e
785:t
778:v
749:.
728:.
703:.
678:.
624:.
195:(
184:/
90:)
50:)
46:(
40:.
20:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.