├── .gitignore ├── CREDITS ├── LICENSE ├── README.md ├── adapters.py ├── advertising.py ├── exceptions.py ├── gatt_server.py ├── gatt_server_example.py └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /CREDITS: -------------------------------------------------------------------------------- 1 | This is at least a partial credits-file of people that have 2 | contributed to the Linux project. It is sorted by name and 3 | formatted to allow easy grepping and beautification by 4 | scripts. The fields are: name (N), email (E), web-address 5 | (W), PGP key ID and fingerprint (P), description (D), and 6 | snail-mail address (S). 7 | Thanks, 8 | 9 | Linus 10 | ---------- 11 | 12 | N: Matt Mackal 13 | E: mpm@selenic.com 14 | D: SLOB slab allocator 15 | 16 | N: Matti Aarnio 17 | E: mea@nic.funet.fi 18 | D: Alpha systems hacking, IPv6 and other network related stuff 19 | D: One of assisting postmasters for vger.kernel.org's lists 20 | S: (ask for current address) 21 | S: Finland 22 | 23 | N: Thomas Abraham 24 | E: thomas.ab@samsung.com 25 | D: Samsung pin controller driver 26 | 27 | N: Dragos Acostachioaie 28 | E: dragos@iname.com 29 | W: http://www.arbornet.org/~dragos 30 | D: /proc/sysvipc 31 | S: C. Negri 6, bl. D3 32 | S: Iasi 6600 33 | S: Romania 34 | 35 | N: Mark Adler 36 | E: madler@alumni.caltech.edu 37 | W: http://alumnus.caltech.edu/~madler/ 38 | D: zlib decompression 39 | 40 | N: Monalisa Agrawal 41 | E: magrawal@nortelnetworks.com 42 | D: Basic Interphase 5575 driver with UBR and ABR support. 43 | S: 75 Donald St, Apt 42 44 | S: Weymouth, MA 02188 45 | S: USA 46 | 47 | N: Dave Airlie 48 | E: airlied@linux.ie 49 | W: http://www.csn.ul.ie/~airlied 50 | D: NFS over TCP patches 51 | D: in-kernel DRM Maintainer 52 | S: Longford, Ireland 53 | S: Sydney, Australia 54 | 55 | N: Tigran A. Aivazian 56 | E: tigran@aivazian.fsnet.co.uk 57 | W: http://www.moses.uklinux.net/patches 58 | D: BFS filesystem 59 | D: Intel IA32 CPU microcode update support 60 | D: Various kernel patches 61 | S: United Kingdom 62 | 63 | N: Werner Almesberger 64 | E: werner@almesberger.net 65 | W: http://www.almesberger.net/ 66 | D: dosfs, LILO, some fd features, ATM, various other hacks here and there 67 | S: Buenos Aires 68 | S: Argentina 69 | 70 | N: Tim Alpaerts 71 | E: tim_alpaerts@toyota-motor-europe.com 72 | D: 802.2 class II logical link control layer, 73 | D: the humble start of an opening towards the IBM SNA protocols 74 | S: Klaproosstraat 72 c 10 75 | S: B-2610 Wilrijk-Antwerpen 76 | S: Belgium 77 | 78 | N: Anton Altaparmakov 79 | E: aia21@cantab.net 80 | W: http://www-stu.christs.cam.ac.uk/~aia21/ 81 | D: Author of new NTFS driver, various other kernel hacks. 82 | S: Christ's College 83 | S: Cambridge CB2 3BU 84 | S: United Kingdom 85 | 86 | N: C. Scott Ananian 87 | E: cananian@alumni.princeton.edu 88 | W: http://www.pdos.lcs.mit.edu/~cananian 89 | P: 1024/85AD9EED AD C0 49 08 91 67 DF D7 FA 04 1A EE 09 E8 44 B0 90 | D: Unix98 pty support. 91 | D: APM update to 1.2 spec. 92 | D: /devfs hacking. 93 | S: 7 Kiwi Loop 94 | S: Howell, NJ 07731 95 | S: USA 96 | 97 | N: Erik Andersen 98 | E: andersen@codepoet.org 99 | W: http://www.codepoet.org/ 100 | P: 1024D/30D39057 1BC4 2742 E885 E4DE 9301 0C82 5F9B 643E 30D3 9057 101 | D: Maintainer of ide-cd and Uniform CD-ROM driver, 102 | D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update. 103 | S: 352 North 525 East 104 | S: Springville, Utah 84663 105 | S: USA 106 | 107 | N: Michael Ang 108 | E: mang@subcarrier.org 109 | W: http://www.subcarrier.org/mang 110 | D: Linux/PA-RISC hacker 111 | S: 85 Frank St. 112 | S: Ottawa, Ontario 113 | S: Canada K2P 0X3 114 | 115 | N: H. Peter Anvin 116 | E: hpa@zytor.com 117 | W: http://www.zytor.com/~hpa/ 118 | P: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74 119 | D: Author of the SYSLINUX boot loader, maintainer of the linux.* news 120 | D: hierarchy and the Linux Device List; various kernel hacks 121 | S: 4390 Albany Drive #46 122 | S: San Jose, California 95129 123 | S: USA 124 | 125 | N: Andrea Arcangeli 126 | E: andrea@suse.de 127 | W: http://www.kernel.org/pub/linux/kernel/people/andrea/ 128 | P: 1024D/68B9CB43 13D9 8355 295F 4823 7C49 C012 DFA1 686E 68B9 CB43 129 | P: 1024R/CB4660B9 CC A0 71 81 F4 A0 63 AC C0 4B 81 1D 8C 15 C8 E5 130 | D: Parport hacker 131 | D: Implemented a workaround for some interrupt buggy printers 132 | D: Author of pscan that helps to fix lp/parport bugs 133 | D: Author of lil (Linux Interrupt Latency benchmark) 134 | D: Fixed the shm swap deallocation at swapoff time (try_to_unuse message) 135 | D: VM hacker 136 | D: Various other kernel hacks 137 | S: Imola 40026 138 | S: Italy 139 | 140 | N: Derek Atkins 141 | E: warlord@MIT.EDU 142 | D: Linux-AFS Port, random kernel hacker, 143 | D: VFS fixes (new notify_change in particular) 144 | D: Moving all VFS access checks into the file systems 145 | S: MIT Room E15-341 146 | S: 20 Ames Street 147 | S: Cambridge, Massachusetts 02139 148 | S: USA 149 | 150 | N: Michel Aubry 151 | E: giovanni 152 | D: Aladdin 1533/1543(C) chipset IDE 153 | D: VIA MVP-3/TX Pro III chipset IDE 154 | 155 | N: Jens Axboe 156 | E: axboe@suse.de 157 | D: Linux CD-ROM maintainer, DVD support 158 | D: elevator + block layer rewrites 159 | D: highmem I/O support 160 | D: misc hacking on IDE, SCSI, block drivers, etc 161 | S: Peter Bangs Vej 258, 2TH 162 | S: 2500 Valby 163 | S: Denmark 164 | 165 | N: John Aycock 166 | E: aycock@cpsc.ucalgary.ca 167 | D: Adaptec 274x driver 168 | S: Department of Computer Science 169 | S: University of Calgary 170 | S: Calgary, Alberta 171 | S: Canada 172 | 173 | N: Miles Bader 174 | E: miles@gnu.org 175 | D: v850 port (uClinux) 176 | S: NEC Corporation 177 | S: 1753 Shimonumabe, Nakahara-ku 178 | S: Kawasaki 211-8666 179 | S: Japan 180 | 181 | N: Ralf Baechle 182 | E: ralf@gnu.org 183 | P: 1024/AF7B30C1 CF 97 C2 CC 6D AE A7 FE C8 BA 9C FC 88 DE 32 C3 184 | D: Linux/MIPS port 185 | D: Linux/68k hacker 186 | S: Hauptstrasse 19 187 | S: 79837 St. Blasien 188 | S: Germany 189 | 190 | N: Krishna Balasubramanian 191 | E: balasub@cis.ohio-state.edu 192 | D: Wrote SYS V IPC (part of standard kernel since 0.99.10) 193 | 194 | N: Chris Ball 195 | E: chris@printf.net 196 | D: Former maintainer of the MMC/SD/SDIO subsystem. 197 | 198 | N: Dario Ballabio 199 | E: ballabio_dario@emc.com 200 | E: dario.ballabio@tiscalinet.it 201 | E: dario.ballabio@inwind.it 202 | D: Author and maintainer of the Ultrastor 14F/34F SCSI driver 203 | D: Author and maintainer of the EATA ISA/EISA/PCI SCSI driver 204 | S: EMC Corporation 205 | S: Milano 206 | S: Italy 207 | 208 | N: Paul Bame 209 | E: bame@debian.org 210 | E: bame@puffin.external.hp.com 211 | E: paul_bame@hp.com 212 | W: http://www.parisc-linux.org 213 | D: PA-RISC 32 and 64-bit early boot, firmware interface, interrupts, misc 214 | S: MS42 215 | S: Hewlett-Packard 216 | S: 3404 E Harmony Rd 217 | S: Fort Collins, CO 80525 218 | S: USA 219 | 220 | N: Arindam Banerji 221 | E: axb@cse.nd.edu 222 | D: Contributed ESDI driver routines needed to port LINUX to the PS/2 MCA. 223 | S: Department of Computer Science & Eng. 224 | S: University of Notre Dame 225 | S: Notre Dame, Indiana 226 | S: USA 227 | 228 | N: Greg Banks 229 | E: gnb@alphalink.com.au 230 | D: IDT77105 ATM network driver 231 | D: some SuperH port work 232 | D: some trivial futzing with kconfig 233 | 234 | N: James Banks 235 | E: james@sovereign.org 236 | D: TLAN network driver 237 | D: Logitech Busmouse driver 238 | 239 | N: Krzysztof G. Baranowski 240 | E: kgb@manjak.knm.org.pl 241 | P: 1024/FA6F16D1 96 D1 1A CF 5F CA 69 EC F9 4F 36 1F 6D 60 7B DA 242 | D: Maintainer of the System V file system. 243 | D: System V fs update for 2.1.x dcache. 244 | D: Forward ported a couple of SCSI drivers. 245 | D: Various bugfixes. 246 | S: ul. Koscielna 12a 247 | S: 62-300 Wrzesnia 248 | S: Poland 249 | 250 | N: Fred Barnes 251 | E: frmb2@ukc.ac.uk 252 | D: Various parport/ppdev hacks and fixes 253 | S: Computing Lab, The University 254 | S: Canterbury, KENT 255 | S: CT2 7NF 256 | S: England 257 | 258 | N: Paul Barton-Davis 259 | E: pbd@op.net 260 | D: Driver for WaveFront soundcards (Turtle Beach Maui, Tropez, Tropez+) 261 | D: Various bugfixes and changes to sound drivers 262 | S: USA 263 | 264 | N: Carlos Henrique Bauer 265 | E: chbauer@acm.org 266 | E: bauer@atlas.unisinos.br 267 | D: Some new sysctl entries for the parport driver. 268 | D: New sysctl function for handling unsigned longs 269 | S: Universidade do Vale do Rio dos Sinos - UNISINOS 270 | S: DSI/IDASI 271 | S: Av. Unisinos, 950 272 | S: 93022000 Sao Leopoldo RS 273 | S: Brazil 274 | 275 | N: Peter Bauer 276 | E: 100136.3530@compuserve.com 277 | D: Driver for depca-ethernet-board 278 | S: 69259 Wilhemsfeld 279 | S: Rainweg 15 280 | S: Germany 281 | 282 | N: Fred Baumgarten 283 | E: dc6iq@insl1.etec.uni-karlsruhe.de 284 | E: dc6iq@adacom.org 285 | E: dc6iq@db0ais.#hes.deu.eu (packet radio) 286 | D: NET-2 & netstat(8) 287 | S: Soevener Strasse 11 288 | S: 53773 Hennef 289 | S: Germany 290 | 291 | N: Donald Becker 292 | E: becker@cesdis.gsfc.nasa.gov 293 | D: General low-level networking hacker 294 | D: Most of the ethercard drivers 295 | D: Original author of the NFS server 296 | S: USRA Center of Excellence in Space Data and Information Sciences 297 | S: Code 930.5, Goddard Space Flight Center 298 | S: Greenbelt, Maryland 20771 299 | S: USA 300 | 301 | N: Adam Belay 302 | E: ambx1@neo.rr.com 303 | D: Linux Plug and Play Support 304 | S: USA 305 | 306 | N: Daniele Bellucci 307 | E: bellucda@tiscali.it 308 | D: Various Janitor work. 309 | W: http://web.tiscali.it/bellucda 310 | S: Via Delle Palme, 9 311 | S: Terni 05100 312 | S: Italy 313 | 314 | N: Krzysztof Benedyczak 315 | E: golbi@mat.uni.torun.pl 316 | W: http://www.mat.uni.torun.pl/~golbi 317 | D: POSIX message queues fs (with M. Wronski) 318 | S: ul. Podmiejska 52 319 | S: Radunica 320 | S: 83-000 Pruszcz Gdanski 321 | S: Poland 322 | 323 | N: Randolph Bentson 324 | E: bentson@grieg.seaslug.org 325 | W: http://www.aa.net/~bentson/ 326 | P: 1024/39ED5729 5C A8 7A F4 B2 7A D1 3E B5 3B 81 CF 47 30 11 71 327 | D: Author of driver for Cyclom-Y and Cyclades-Z async mux 328 | S: 2322 37th Ave SW 329 | S: Seattle, Washington 98126-2010 330 | S: USA 331 | 332 | N: Muli Ben-Yehuda 333 | E: mulix@mulix.org 334 | E: muli@il.ibm.com 335 | W: http://www.mulix.org 336 | D: trident OSS sound driver, x86-64 dma-ops and Calgary IOMMU, 337 | D: KVM and Xen bits and other misc. hackery. 338 | S: Haifa, Israel 339 | 340 | N: Johannes Berg 341 | E: johannes@sipsolutions.net 342 | W: http://johannes.sipsolutions.net/ 343 | P: 4096R/7BF9099A C0EB C440 F6DA 091C 884D 8532 E0F3 73F3 7BF9 099A 344 | D: powerpc & 802.11 hacker 345 | 346 | N: Stephen R. van den Berg (AKA BuGless) 347 | E: berg@pool.informatik.rwth-aachen.de 348 | D: General kernel, gcc, and libc hacker 349 | D: Specialisation: tweaking, ensuring portability, tweaking, cleaning, 350 | D: tweaking and occasionally debugging :-) 351 | S: Bouwensstraat 22 352 | S: 6369 BG Simpelveld 353 | S: The Netherlands 354 | 355 | N: Peter Berger 356 | E: pberger@brimson.com 357 | W: http://www.brimson.com 358 | D: Author/maintainer of Digi AccelePort USB driver 359 | S: 1549 Hiironen Rd. 360 | S: Brimson, MN 55602 361 | S: USA 362 | 363 | N: Hennus Bergman 364 | P: 1024/77D50909 76 99 FD 31 91 E1 96 1C 90 BB 22 80 62 F6 BD 63 365 | D: Author and maintainer of the QIC-02 tape driver 366 | S: The Netherlands 367 | 368 | N: Tomas Berndtsson 369 | E: tomas@nocrew.org 370 | W: http://tomas.nocrew.org/ 371 | D: dsp56k device driver 372 | 373 | N: Ross Biro 374 | E: ross.biro@gmail.com 375 | D: Original author of the Linux networking code 376 | 377 | N: Anton Blanchard 378 | E: anton@samba.org 379 | W: http://samba.org/~anton/ 380 | P: 1024/8462A731 4C 55 86 34 44 59 A7 99 2B 97 88 4A 88 9A 0D 97 381 | D: sun4 port, Sparc hacker 382 | 383 | N: Hugh Blemings 384 | E: hugh@blemings.org 385 | W: http://blemings.org/hugh 386 | D: Original author of the Keyspan USB to serial drivers, random PowerPC hacker 387 | S: PO Box 234 388 | S: Belconnen ACT 2616 389 | S: Australia 390 | 391 | N: Philip Blundell 392 | E: philb@gnu.org 393 | D: Linux/ARM hacker 394 | D: Device driver hacker (eexpress, 3c505, c-qcam, ...) 395 | D: m68k port to HP9000/300 396 | D: AUN network protocols 397 | D: Co-architect of the parallel port sharing system 398 | D: IPv6 netfilter 399 | S: FutureTV Labs Ltd 400 | S: Brunswick House, 61-69 Newmarket Rd, Cambridge CB5 8EG 401 | S: United Kingdom 402 | 403 | N: Thomas Bogendörfer 404 | E: tsbogend@alpha.franken.de 405 | D: PCnet32 driver, SONIC driver, JAZZ_ESP driver 406 | D: newport abscon driver, g364 framebuffer driver 407 | D: strace for Linux/Alpha 408 | D: Linux/MIPS hacker 409 | S: Schafhofstr. 40 410 | S: 90556 Cadolzburg 411 | S: Germany 412 | 413 | N: Bill Bogstad 414 | E: bogstad@pobox.com 415 | D: wrote /proc/self hack, minor samba & dosemu patches 416 | 417 | N: Axel Boldt 418 | E: axel@uni-paderborn.de 419 | W: http://math-www.uni-paderborn.de/~axel/ 420 | D: Configuration help text support 421 | D: Linux CD and Support Giveaway List 422 | 423 | N: Erik Inge Bolsø 424 | E: knan@mo.himolde.no 425 | D: Misc kernel hacks 426 | D: Updated PC speaker driver for 2.3 427 | S: Norway 428 | 429 | N: Andreas E. Bombe 430 | E: andreas.bombe@munich.netsurf.de 431 | W: http://home.pages.de/~andreas.bombe/ 432 | P: 1024/04880A44 72E5 7031 4414 2EB6 F6B4 4CBD 1181 7032 0488 0A44 433 | D: IEEE 1394 subsystem rewrite and maintainer 434 | D: Texas Instruments PCILynx IEEE 1394 driver 435 | 436 | N: Al Borchers 437 | E: alborchers@steinerpoint.com 438 | D: Author/maintainer of Digi AccelePort USB driver 439 | D: work on usbserial and keyspan_pda drivers 440 | S: 4912 Zenith Ave. S. 441 | S: Minneapolis, MN 55410 442 | S: USA 443 | 444 | N: Marc Boucher 445 | E: marc@mbsi.ca 446 | P: CA 67 A5 1A 38 CE B6 F2 D5 83 51 03 D2 9C 30 9E CE D2 DD 65 447 | D: Netfilter core 448 | D: IP policy routing by mark 449 | D: Various fixes (mostly networking) 450 | S: Montreal, Quebec 451 | S: Canada 452 | 453 | N: Zoltán Böszörményi 454 | E: zboszor@mail.externet.hu 455 | D: MTRR emulation with Cyrix style ARR registers, Athlon MTRR support 456 | 457 | N: John Boyd 458 | E: boyd@cis.ohio-state.edu 459 | D: Co-author of wd7000 SCSI driver 460 | S: 101 Curl Drive #591 461 | S: Columbus, Ohio 43210 462 | S: USA 463 | 464 | N: Peter Braam 465 | E: braam@clusterfs.com 466 | W: http://www.clusterfs.com/ 467 | D: Coda & InterMezzo filesystems 468 | S: 181 McNeil 469 | S: Canmore, AB 470 | S: Canada, T1W 2R9 471 | 472 | N: Ryan Bradetich 473 | E: rbradetich@uswest.net 474 | D: Linux/PA-RISC hacker 475 | S: 1200 Goldenrod Dr. 476 | S: Nampa, Idaho 83686 477 | S: USA 478 | 479 | N: Dirk J. Brandewie 480 | E: dirk.j.brandewie@intel.com 481 | E: linux-wimax@intel.com 482 | D: Intel Wireless WiMAX Connection 2400 SDIO driver 483 | 484 | N: Derrick J. Brashear 485 | E: shadow@dementia.org 486 | W: http://www.dementia.org/~shadow 487 | P: 512/71EC9367 C5 29 0F BC 83 51 B9 F0 BC 05 89 A0 4F 1F 30 05 488 | D: Author of Sparc CS4231 audio driver, random Sparc work 489 | S: 403 Gilmore Avenue 490 | S: Trafford, Pennsylvania 15085 491 | S: USA 492 | 493 | N: Dag Brattli 494 | E: dagb@cs.uit.no 495 | W: http://www.cs.uit.no/~dagb 496 | D: IrDA Subsystem 497 | S: 19. Wellington Road 498 | S: Lancaster, LA1 4DN 499 | S: UK, England 500 | 501 | N: Lars Brinkhoff 502 | E: lars@nocrew.org 503 | W: http://lars.nocrew.org/ 504 | D: dsp56k device driver 505 | D: ptrace proxy in user mode kernel port 506 | S: Kopmansg 2 507 | S: 411 13 Goteborg 508 | S: Sweden 509 | 510 | N: Paul Bristow 511 | E: paul@paulbristow.net 512 | W: http://paulbristow.net/linux/idefloppy.html 513 | D: Maintainer of IDE/ATAPI floppy driver 514 | 515 | N: Stefano Brivio 516 | E: stefano.brivio@polimi.it 517 | D: Broadcom B43 driver 518 | 519 | N: Dominik Brodowski 520 | E: linux@brodo.de 521 | W: http://www.brodo.de/ 522 | P: 1024D/725B37C6 190F 3E77 9C89 3B6D BECD 46EE 67C3 0308 725B 37C6 523 | D: parts of CPUFreq code, ACPI bugfixes, PCMCIA rewrite, cpufrequtils 524 | S: Tuebingen, Germany 525 | 526 | N: Andries Brouwer 527 | E: aeb@cwi.nl 528 | D: random Linux hacker 529 | S: Bessemerstraat 21 530 | S: Amsterdam 531 | S: The Netherlands 532 | 533 | N: NeilBrown 534 | E: neil@brown.name 535 | P: 4096R/566281B9 1BC6 29EB D390 D870 7B5F 497A 39EC 9EDD 5662 81B9 536 | D: NFSD Maintainer 2000-2007 537 | D: MD Maintainer 2001-2016 538 | 539 | N: Zach Brown 540 | E: zab@zabbo.net 541 | D: maestro pci sound 542 | 543 | N: David Brownell 544 | D: Kernel engineer, mentor, and friend. Maintained USB EHCI and 545 | D: gadget layers, SPI subsystem, GPIO subsystem, and more than a few 546 | D: device drivers. His encouragement also helped many engineers get 547 | D: started working on the Linux kernel. David passed away in early 548 | D: 2011, and will be greatly missed. 549 | W: https://lkml.org/lkml/2011/4/5/36 550 | 551 | N: Gary Brubaker 552 | E: xavyer@ix.netcom.com 553 | D: USB Serial Empeg Empeg-car Mark I/II Driver 554 | 555 | N: Matthias Bruestle 556 | E: m@mbsks.franken.de 557 | D: REINER SCT cyberJack pinpad/e-com USB chipcard reader driver 558 | S: Germany 559 | 560 | N: Adrian Bunk 561 | P: 1024D/4F12B400 B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400 562 | D: misc kernel hacking and testing 563 | 564 | N: Ray Burr 565 | E: ryb@nightmare.com 566 | D: Original author of Amiga FFS filesystem 567 | S: Orlando, Florida 568 | S: USA 569 | 570 | N: Lennert Buytenhek 571 | E: kernel@wantstofly.org 572 | D: Original (2.4) rewrite of the ethernet bridging code 573 | D: Various ARM bits and pieces 574 | S: Ravenhorst 58 575 | S: 2317 AK Leiden 576 | S: The Netherlands 577 | 578 | N: Michael Callahan 579 | E: callahan@maths.ox.ac.uk 580 | D: PPP for Linux 581 | S: The Mathematical Institute 582 | S: 25-29 St Giles 583 | S: Oxford 584 | S: United Kingdom 585 | 586 | N: Luiz Fernando N. Capitulino 587 | E: lcapitulino@mandriva.com.br 588 | E: lcapitulino@gmail.com 589 | W: http://www.cpu.eti.br 590 | D: misc kernel hacking 591 | S: Mandriva 592 | S: Brazil 593 | 594 | N: Remy Card 595 | E: Remy.Card@masi.ibp.fr 596 | E: Remy.Card@linux.org 597 | D: Extended file system [defunct] designer and developer 598 | D: Second extended file system designer and developer 599 | S: Institut Blaise Pascal 600 | S: 4 Place Jussieu 601 | S: 75252 Paris Cedex 05 602 | S: France 603 | 604 | N: Ulf Carlsson 605 | D: SGI Indy audio (HAL2) drivers 606 | E: ulfc@bun.falkenberg.se 607 | 608 | N: Ed Carp 609 | E: ecarp@netcom.com 610 | D: uucp, elm, pine, pico port 611 | D: cron, at(1) developer 612 | S: 48287 Sawleaf 613 | S: Fremont, California 94539 614 | S: USA 615 | 616 | N: Florent Chabaud 617 | E: florent.chabaud@polytechnique.org 618 | D: software suspend 619 | S: SGDN/DCSSI/SDS/LTI 620 | S: 58, Bd Latour-Maubourg 621 | S: 75700 Paris 07 SP 622 | S: France 623 | 624 | N: Gordon Chaffee 625 | E: chaffee@cs.berkeley.edu 626 | W: http://bmrc.berkeley.edu/people/chaffee/ 627 | D: vfat, fat32, joliet, native language support 628 | S: 3700 Warwick Road 629 | S: Fremont, California 94555 630 | S: USA 631 | 632 | N: Chih-Jen Chang 633 | E: chihjenc@scf.usc.edu 634 | E: chihjen@iis.sinica.edu.tw 635 | D: IGMP(Internet Group Management Protocol) version 2 636 | S: 3F, 65 Tajen street 637 | S: Tamsui town, Taipei county, 638 | S: Taiwan 251 639 | S: Republic of China 640 | 641 | N: Reinette Chatre 642 | E: reinette.chatre@intel.com 643 | D: WiMedia Link Protocol implementation 644 | D: UWB stack bits and pieces 645 | 646 | N: Michael Elizabeth Chastain 647 | E: mec@shout.net 648 | D: Configure, Menuconfig, xconfig 649 | 650 | N: Mauro Carvalho Chehab 651 | E: m.chehab@samsung.org 652 | E: mchehab@osg.samsung.com 653 | E: mchehab@infradead.org 654 | D: Media subsystem (V4L/DVB) drivers and core 655 | D: EDAC drivers and EDAC 3.0 core rework 656 | S: Brazil 657 | 658 | N: Raymond Chen 659 | E: raymondc@microsoft.com 660 | D: Author of Configure script 661 | S: 14509 NE 39th Street #1096 662 | S: Bellevue, Washington 98007 663 | S: USA 664 | 665 | N: Chris Cheney 666 | E: chris.cheney@gmail.com 667 | E: ccheney@redhat.com 668 | P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2 669 | D: Vista Imaging usb webcam driver 670 | S: 2308 Therrell Way 671 | S: McKinney, TX 75070 672 | S: USA 673 | 674 | N: Stuart Cheshire 675 | E: cheshire@cs.stanford.edu 676 | D: Author of Starmode Radio IP (STRIP) driver 677 | D: Originator of design for new combined interrupt handlers 678 | S: William Gates Department 679 | S: Stanford University 680 | S: Stanford, California 94305 681 | S: USA 682 | 683 | N: Carlos Chinea 684 | E: carlos.chinea@nokia.com 685 | E: cch.devel@gmail.com 686 | D: Author of HSI Subsystem 687 | 688 | N: Randolph Chung 689 | E: tausq@debian.org 690 | D: Linux/PA-RISC hacker 691 | S: Hong Kong 692 | 693 | N: Juan Jose Ciarlante 694 | W: http://juanjox.kernelnotes.org/ 695 | E: jjciarla@raiz.uncu.edu.ar 696 | E: jjo@mendoza.gov.ar 697 | D: Network driver alias support 698 | D: IP masq hashing and app modules 699 | D: IP masq 2.1 features and bugs 700 | S: Las Cuevas 2385 - Bo Guemes 701 | S: Las Heras, Mendoza CP 5539 702 | S: Argentina 703 | 704 | N: Steven P. Cole 705 | E: scole@lanl.gov 706 | E: elenstev@mesatop.com 707 | D: Various build fixes and kernel documentation. 708 | S: Los Alamos, New Mexico 709 | S: USA 710 | 711 | N: Hamish Coleman 712 | E: hamish@zot.apana.org.au 713 | D: SEEQ8005 network driver 714 | S: 98 Paxton Street 715 | S: East Malvern, Victoria, 3145 716 | S: Australia 717 | 718 | N: Neil Conway 719 | E: nconway.list@ukaea.org.uk 720 | D: Assorted sched/mm titbits 721 | S: Oxfordshire, UK. 722 | 723 | N: Kees Cook 724 | E: kees@outflux.net 725 | E: kees@ubuntu.com 726 | E: keescook@chromium.org 727 | W: http://outflux.net/blog/ 728 | P: 4096R/DC6DC026 A5C3 F68F 229D D60F 723E 6E13 8972 F4DF DC6D C026 729 | D: Various security things, bug fixes, and documentation. 730 | S: (ask for current address) 731 | S: Portland, Oregon 732 | S: USA 733 | 734 | N: Robin Cornelius 735 | E: robincornelius@users.sourceforge.net 736 | D: Ralink rt2x00 WLAN driver 737 | S: Cornwall, U.K. 738 | 739 | N: Mark Corner 740 | E: mcorner@umich.edu 741 | W: http://www.eecs.umich.edu/~mcorner/ 742 | D: USB Bluetooth Driver 743 | S: University of Michigan 744 | S: Ann Arbor, MI 745 | 746 | N: Michael Cornwell 747 | E: cornwell@acm.org 748 | D: Original designer and co-author of ATA Taskfile 749 | D: Kernel module SMART utilities 750 | S: Santa Cruz, California 751 | S: USA 752 | 753 | N: Luis Correia 754 | E: lfcorreia@users.sf.net 755 | D: Ralink rt2x00 WLAN driver 756 | S: Belas, Portugal 757 | 758 | N: Alan Cox 759 | W: http://www.linux.org.uk/diary/ 760 | D: Linux Networking (0.99.10->2.0.29) 761 | D: Original Appletalk, AX.25, and IPX code 762 | D: 3c501 hacker 763 | D: Watchdog timer drivers 764 | D: Linux/SMP x86 (up to 2.0 only) 765 | D: Initial Mac68K port 766 | D: Video4Linux design, bw-qcam and PMS driver ports. 767 | D: IDE modularisation work 768 | D: Z85230 driver 769 | D: Former security contact point (please use vendor-sec@lst.de) 770 | D: ex 2.2 maintainer 771 | D: 2.1.x modular sound 772 | D: Assigned major/minor numbers maintainer at lanana.org 773 | S: c/o Red Hat UK Ltd 774 | S: Alexandra House 775 | S: Alexandra Terrace 776 | S: Guildford, GU1 3DA 777 | S: United Kingdom 778 | 779 | N: Cristian Mihail Craciunescu 780 | W: http://www.dnt.ro/~cristi/ 781 | E: cristi@dnt.ro 782 | D: Support for Xircom PGSDB9 (firmware and host driver) 783 | S: Bucharest 784 | S: Romania 785 | 786 | N: Laurence Culhane 787 | E: loz@holmes.demon.co.uk 788 | D: Wrote the initial alpha SLIP code 789 | S: 81 Hood Street 790 | S: Northampton 791 | S: NN1 3QT 792 | S: United Kingdom 793 | 794 | N: Massimo Dal Zotto 795 | E: dz@debian.org 796 | D: i8k Dell laptop SMM driver 797 | 798 | N: Uwe Dannowski 799 | E: Uwe.Dannowski@ira.uka.de 800 | W: http://i30www.ira.uka.de/~dannowsk/ 801 | D: FORE PCA-200E driver 802 | S: University of Karlsruhe 803 | S: Germany 804 | 805 | N: Ray Dassen 806 | E: jdassen@wi.LeidenUniv.nl 807 | W: http://www.wi.leidenuniv.nl/~jdassen/ 808 | P: 1024/672D05C1 DD 60 32 60 F7 90 64 80 E7 6F D4 E4 F8 C9 4A 58 809 | D: Debian GNU/Linux: www.debian.org maintainer, FAQ co-maintainer, 810 | D: packages testing, nit-picking & fixing. Enjoying BugFree (TM) kernels. 811 | S: Zuidsingel 10A 812 | S: 2312 SB Leiden 813 | S: The Netherlands 814 | 815 | N: David Davies 816 | E: davies@wanton.lkg.dec.com 817 | D: Network driver author - depca, ewrk3 and de4x5 818 | D: Wrote shared interrupt support 819 | S: Digital Equipment Corporation 820 | S: 550 King Street 821 | S: Littleton, Massachusetts 01460 822 | S: USA 823 | 824 | N: Frank Davis 825 | E: fdavis@si.rr.com 826 | E: fdavis112@juno.com 827 | D: Various kernel patches 828 | S: 8 Lakeview Terr. 829 | S: Kerhonkson, NY 12446 830 | S: USA 831 | 832 | N: Wayne Davison 833 | E: davison@borland.com 834 | D: Second extended file system co-designer 835 | 836 | N: Terry Dawson 837 | E: terry@perf.no.itg.telecom.com.au 838 | E: terry@albert.vk2ktj.ampr.org (Amateur Radio use only) 839 | D: trivial hack to add variable address length routing to Rose. 840 | D: AX25-HOWTO, HAM-HOWTO, IPX-HOWTO, NET-2-HOWTO 841 | D: ax25-utils maintainer. 842 | 843 | N: Helge Deller 844 | E: deller@gmx.de 845 | E: hdeller@redhat.de 846 | D: PA-RISC Linux hacker, LASI-, ASP-, WAX-, LCD/LED-driver 847 | S: Schimmelsrain 1 848 | S: D-69231 Rauenberg 849 | S: Germany 850 | 851 | N: Jean Delvare 852 | E: jdelvare@suse.de 853 | W: http://jdelvare.nerim.net/ 854 | D: Several hardware monitoring drivers 855 | S: France 856 | 857 | N: Peter Denison 858 | E: peterd@pnd-pc.demon.co.uk 859 | W: http://www.pnd-pc.demon.co.uk/promise/ 860 | D: Promise DC4030VL caching HD controller drivers 861 | 862 | N: Todd J. Derr 863 | E: tjd@fore.com 864 | W: http://www.wordsmith.org/~tjd 865 | D: Random console hacks and other miscellaneous stuff 866 | S: 3000 FORE Drive 867 | S: Warrendale, Pennsylvania 15086 868 | S: USA 869 | 870 | N: Martin Devera 871 | E: devik@cdi.cz 872 | W: http://luxik.cdi.cz/~devik/qos/ 873 | D: HTB qdisc and random networking hacks 874 | 875 | N: Alex deVries 876 | E: alex@onefishtwo.ca 877 | D: Various SGI parts, bits of HAL2 and Newport, PA-RISC Linux. 878 | S: 41.5 William Street 879 | S: Ottawa, Ontario 880 | S: K1N 6Z9 881 | S: CANADA 882 | 883 | N: Jeff Dike 884 | E: jdike@karaya.com 885 | W: http://user-mode-linux.sourceforge.net 886 | D: User mode kernel port 887 | S: 375 Tubbs Hill Rd 888 | S: Deering NH 03244 889 | S: USA 890 | 891 | N: Matt Domsch 892 | E: Matt_Domsch@dell.com 893 | W: http://www.dell.com/linux 894 | W: http://domsch.com/linux 895 | D: Linux/IA-64 896 | D: Dell PowerEdge server, SCSI layer, misc drivers, and other patches 897 | S: Dell Inc. 898 | S: One Dell Way 899 | S: Round Rock, TX 78682 900 | S: USA 901 | 902 | N: Mattia Dongili 903 | E: malattia@gmail.com 904 | D: cpufrequtils (precursor to cpupowerutils) 905 | 906 | N: Ben Dooks 907 | E: ben-linux@fluff.org 908 | E: ben@simtec.co.uk 909 | W: http://www.fluff.org/ben/ 910 | W: http://www.simtec.co.uk/ 911 | D: Samsung S3C2410/S3C2440 support, general ARM support 912 | D: Maintaining Simtec Electronics development boards 913 | S: Simtec Electronics 914 | S: Avondale Drive 915 | S: Tarleton 916 | S: Preston 917 | S: Lancs 918 | S: PR4 6AX 919 | S: United Kingdom 920 | 921 | N: Ivo van Doorn 922 | E: IvDoorn@gmail.com 923 | W: http://www.mendiosus.nl 924 | D: Ralink rt2x00 WLAN driver 925 | S: Haarlem, The Netherlands 926 | 927 | N: John G Dorsey 928 | E: john+@cs.cmu.edu 929 | D: ARM Linux ports to Assabet/Neponset, Spot 930 | S: Department of Electrical and Computer Engineering 931 | S: Carnegie Mellon University 932 | S: Pittsburgh, PA 15213 933 | S: USA 934 | 935 | N: Eddie C. Dost 936 | E: ecd@skynet.be 937 | D: Linux/Sparc kernel hacker 938 | D: Linux/Sparc maintainer 939 | S: Rue de la Chapelle 51 940 | S: 4850 Moresnet 941 | S: Belgium 942 | 943 | N: Cort Dougan 944 | E: cort@fsmlabs.com 945 | W: http://www.fsmlabs.com/linuxppcbk.html 946 | D: PowerPC 947 | 948 | N: Daniel Drake 949 | E: dsd@gentoo.org 950 | D: USBAT02 CompactFlash support in usb-storage 951 | S: UK 952 | 953 | N: Oleg Drokin 954 | E: green@ccssu.crimea.ua 955 | W: http://www.ccssu.crimea.ua/~green 956 | D: Cleaning up sound drivers, SA1100 Watchdog. 957 | S: Skvoznoy per., 14a 958 | S: Evpatoria 959 | S: Crimea 960 | S: UKRAINE, 334320 961 | 962 | N: Walt Drummond 963 | E: drummond@valinux.com 964 | D: Linux/IA-64 965 | S: 1382 Bordeaux Drive 966 | S: Sunnyvale, CA 94087 967 | S: USA 968 | 969 | N: Bruno Ducrot 970 | E: ducrot@poupinou.org 971 | D: CPUFreq and ACPI bugfixes. 972 | S: Mougin, France 973 | 974 | N: Don Dugger 975 | E: n0ano@valinux.com 976 | D: Linux/IA-64 977 | S: 1209 Pearl Street, #12 978 | S: Boulder, CO 80302 979 | S: USA 980 | 981 | N: Thomas Dunbar 982 | E: tdunbar@vt.edu 983 | D: TeX & METAFONT hacking/maintenance 984 | S: Virginia Tech Computing Center 985 | S: 1700 Pratt Drive 986 | S: Blacksburg, Virginia 24061 987 | S: USA 988 | 989 | N: Randy Dunlap 990 | E: rdunlap@infradead.org 991 | W: http://www.infradead.org/~rdunlap/ 992 | D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers 993 | D: x86 SMP, ACPI, bootflag hacking 994 | D: documentation, builds 995 | S: (ask for current address) 996 | S: USA 997 | 998 | N: Bob Dunlop 999 | E: rjd@xyzzy.clara.co.uk 1000 | E: bob.dunlop@farsite.co.uk 1001 | W: www.farsite.co.uk 1002 | D: FarSync card device driver 1003 | S: FarSite Communications Ltd 1004 | S: Tempus Business Centre 1005 | S: 60 Kingsclere Road 1006 | S: Basingstoke RG21 6XG 1007 | S: UK 1008 | 1009 | N: Cyrus Durgin 1010 | E: cider@speakeasy.org 1011 | W: http://www.speakeasy.org/~cider/ 1012 | D: implemented kmod 1013 | 1014 | N: Torsten Duwe 1015 | E: Torsten.Duwe@informatik.uni-erlangen.de 1016 | D: Part-time kernel hacker 1017 | D: The Linux Support Team Erlangen 1018 | S: Grevenbroicher Str. 17 1019 | S: 47807 Krefeld 1020 | S: Germany 1021 | 1022 | N: Tom Dyas 1023 | E: tdyas@eden.rutgers.edu 1024 | D: minor hacks and some sparc port stuff 1025 | S: New Jersey 1026 | S: USA 1027 | 1028 | N: Drew Eckhardt 1029 | E: drew@PoohSticks.ORG 1030 | D: SCSI code 1031 | D: Assorted snippets elsewhere 1032 | D: Boot sector "..." printing 1033 | S: 2037 Walnut #6 1034 | S: Boulder, Colorado 80302 1035 | S: USA 1036 | 1037 | N: Heiko Eißfeldt 1038 | E: heiko@colossus.escape.de heiko@unifix.de 1039 | D: verify_area stuff, generic SCSI fixes 1040 | D: SCSI Programming HOWTO 1041 | D: POSIX.1 compliance testing 1042 | S: Unifix Software GmbH 1043 | S: Bueltenweg 27a 1044 | S: D-38106 Braunschweig 1045 | S: Germany 1046 | 1047 | N: Bjorn Ekwall 1048 | E: bj0rn@blox.se 1049 | W: http://www.pi.se/blox/ 1050 | D: Extended support for loadable modules 1051 | D: D-Link pocket adapter drivers 1052 | S: Brevia 1043 1053 | S: S-114 79 Stockholm 1054 | S: Sweden 1055 | 1056 | N: Pekka Enberg 1057 | E: penberg@cs.helsinki.fi 1058 | W: http://www.cs.helsinki.fi/u/penberg/ 1059 | D: Various kernel hacks, fixes, and cleanups. 1060 | D: Slab allocators 1061 | S: Finland 1062 | 1063 | N: David Engebretsen 1064 | E: engebret@us.ibm.com 1065 | D: Linux port to 64-bit PowerPC architecture 1066 | 1067 | N: Michael Engel 1068 | E: engel@unix-ag.org 1069 | D: DECstation framebuffer drivers 1070 | S: Germany 1071 | 1072 | N: Paal-Kristian Engstad 1073 | E: engstad@intermetrics.com 1074 | D: Kernel smbfs (to mount WfW, NT and OS/2 network drives.) 1075 | S: 17101 Springdale Street #225 1076 | S: Huntington Beach, California 92649 1077 | S: USA 1078 | 1079 | N: Stephane Eranian 1080 | E: eranian@hpl.hp.com 1081 | D: Linux/ia64 1082 | S: 1501 Page Mill Rd, MS 1U17 1083 | S: Palo Alto, CA 94304 1084 | S: USA 1085 | 1086 | N: Johannes Erdfelt 1087 | E: johannes@erdfelt.com 1088 | D: Linux/IA-64 bootloader and kernel goop, USB 1089 | S: 6350 Stoneridge Mall Road 1090 | S: Pleasanton, CA 94588 1091 | S: USA 1092 | 1093 | N: Dmitry Eremin-Solenikov 1094 | E: dbaryshkov@gmail.com 1095 | D: Power Supply Maintainer from v3.14 - v3.15 1096 | 1097 | N: Doug Evans 1098 | E: dje@cygnus.com 1099 | D: Wrote Xenix FS (part of standard kernel since 0.99.15) 1100 | 1101 | N: Riccardo Facchetti 1102 | E: fizban@tin.it 1103 | P: 1024/6E657BB5 AF 22 90 33 78 76 04 8B AF F9 97 1E B5 E2 65 30 1104 | D: Audio Excel DSP 16 init driver author 1105 | D: libmodem author 1106 | D: Yet Another Micro Monitor port and current maintainer 1107 | D: First ELF-HOWTO author 1108 | D: random kernel hacker 1109 | S: Via Paolo VI n.29 1110 | S: 23900 - LECCO (Lc) 1111 | S: Italy 1112 | 1113 | N: Nils Faerber 1114 | E: nils@kernelconcepts.de 1115 | D: i810 TCO watchdog driver author 1116 | D: Mitsumi LU005 tests and fixes 1117 | D: port and fixes of cs46xx sounddriver 1118 | S: Dreisbachstrasse 24 1119 | S: D-57250 Netphen 1120 | S: Germany 1121 | 1122 | N: Rik Faith 1123 | E: faith@acm.org 1124 | D: Future Domain TMC-16x0 SCSI driver (author) 1125 | D: APM driver (early port) 1126 | D: DRM drivers (author of several) 1127 | 1128 | N: János Farkas 1129 | E: chexum@shadow.banki.hu 1130 | D: romfs, various (mostly networking) fixes 1131 | P: 1024/F81FB2E1 41 B7 E4 E6 3E D4 A6 71 6D 9C F3 9F F2 BF DF 6E 1132 | S: Madarász Viktor utca 25 1133 | S: 1131 Budapest 1134 | S: Hungary 1135 | 1136 | N: Ben Fennema 1137 | E: bfennema@falcon.csc.calpoly.edu 1138 | W: http://www.csc.calpoly.edu/~bfennema 1139 | D: UDF filesystem 1140 | S: (ask for current address) 1141 | S: USA 1142 | 1143 | N: Jürgen Fischer 1144 | E: fischer@norbit.de 1145 | D: Author of Adaptec AHA-152x SCSI driver 1146 | S: Schulstraße 18 1147 | S: 26506 Norden 1148 | S: Germany 1149 | 1150 | N: Jeremy Fitzhardinge 1151 | E: jeremy@goop.org 1152 | W: http://www.goop.org/~jeremy 1153 | D: author of userfs filesystem 1154 | D: Improved mmap and munmap handling 1155 | D: General mm minor tidyups 1156 | D: autofs v4 maintainer 1157 | D: Xen subsystem 1158 | S: 987 Alabama St 1159 | S: San Francisco 1160 | S: CA, 94110 1161 | S: USA 1162 | 1163 | N: Ralf Flaxa 1164 | E: rfflaxa@immd4.informatik.uni-erlangen.de 1165 | D: The Linux Support Team Erlangen 1166 | D: Creator of LST distribution 1167 | D: Author of installation tool LISA 1168 | S: Pfitznerweg 6 1169 | S: 74523 Schwaebisch Hall 1170 | S: Germany 1171 | 1172 | N: Lawrence Foard 1173 | E: entropy@world.std.com 1174 | D: Floppy track reading, fs code 1175 | S: 217 Park Avenue, Suite 108 1176 | S: Worcester, Massachusetts 01609 1177 | S: USA 1178 | 1179 | N: Karl Fogel 1180 | E: kfogel@cs.oberlin.edu 1181 | D: Contributor, Linux User's Guide 1182 | S: 1123 North Oak Park Avenue 1183 | S: Oak Park, Illinois 60302 1184 | S: USA 1185 | 1186 | N: Daniel J. Frasnelli 1187 | E: dfrasnel@alphalinux.org 1188 | W: http://www.alphalinux.org/ 1189 | P: 1024/3EF87611 B9 F1 44 50 D3 E8 C2 80 DA E5 55 AA 56 7C 42 DA 1190 | D: DEC Alpha hacker 1191 | D: Miscellaneous bug squisher 1192 | 1193 | N: Jim Freeman 1194 | E: jfree@sovereign.org 1195 | W: http://www.sovereign.org/ 1196 | D: Initial GPL'd Frame Relay driver 1197 | D: Dynamic PPP devices 1198 | D: Sundry modularizations (PPP, IPX, ...) and fixes 1199 | 1200 | N: Bob Frey 1201 | E: bobf@advansys.com 1202 | D: AdvanSys SCSI driver 1203 | S: 1150 Ringwood Court 1204 | S: San Jose, California 95131 1205 | S: USA 1206 | 1207 | N: Adam Fritzler 1208 | E: mid@zigamorph.net 1209 | 1210 | N: Fernando Fuganti 1211 | E: fuganti@conectiva.com.br 1212 | E: fuganti@netbank.com.br 1213 | D: random kernel hacker, ZF MachZ Watchdog driver 1214 | S: Conectiva S.A. 1215 | S: R. Tocantins, 89 - Cristo Rei 1216 | S: 80050-430 - Curitiba - Paraná 1217 | S: Brazil 1218 | 1219 | N: Oded Gabbay 1220 | E: oded.gabbay@gmail.com 1221 | D: AMD KFD maintainer 1222 | S: 12 Shraga Raphaeli 1223 | S: Petah-Tikva, 4906418 1224 | S: Israel 1225 | 1226 | N: Kumar Gala 1227 | E: galak@kernel.crashing.org 1228 | D: Embedded PowerPC 6xx/7xx/74xx/82xx/83xx/85xx support 1229 | S: Austin, Texas 78729 1230 | S: USA 1231 | 1232 | N: Nigel Gamble 1233 | E: nigel@nrg.org 1234 | D: Interrupt-driven printer driver 1235 | D: Preemptible kernel 1236 | S: 120 Alley Way 1237 | S: Mountain View, California 94040 1238 | S: USA 1239 | 1240 | N: Jeff Garzik 1241 | E: jgarzik@pobox.com 1242 | 1243 | N: Jacques Gelinas 1244 | E: jacques@solucorp.qc.ca 1245 | D: Author of the Umsdos file system 1246 | S: 1326 De Val-Brillant 1247 | S: Laval, Quebec 1248 | S: Canada H7Y 1V9 1249 | 1250 | N: David Gentzel 1251 | E: gentzel@telerama.lm.com 1252 | D: Original BusLogic driver and original UltraStor driver 1253 | S: Whitfield Software Services 1254 | S: 600 North Bell Avenue, Suite 160 1255 | S: Carnegie, Pennsylvania 15106-4304 1256 | S: USA 1257 | 1258 | N: Kai Germaschewski 1259 | E: kai@germaschewski.name 1260 | D: Major kbuild rework during the 2.5 cycle 1261 | D: ISDN Maintainer 1262 | S: USA 1263 | 1264 | N: Philip Gladstone 1265 | E: philip@gladstonefamily.net 1266 | D: Kernel / timekeeping stuff 1267 | S: Carlisle, MA 01741 1268 | S: USA 1269 | 1270 | N: Jan-Benedict Glaw 1271 | E: jbglaw@lug-owl.de 1272 | D: SRM environment driver (for Alpha systems) 1273 | P: 1024D/8399E1BB 250D 3BCF 7127 0D8C A444 A961 1DBD 5E75 8399 E1BB 1274 | 1275 | N: Thomas Gleixner 1276 | E: tglx@linutronix.de 1277 | D: NAND flash hardware support, JFFS2 on NAND flash 1278 | 1279 | N: Richard E. Gooch 1280 | E: rgooch@atnf.csiro.au 1281 | D: parent process death signal to children 1282 | D: prctl() syscall 1283 | D: /proc/mtrr support to manipulate MTRRs on Intel P6 family 1284 | D: Device FileSystem (devfs) 1285 | S: CSIRO Australia Telescope National Facility 1286 | S: P.O. Box 76, Epping 1287 | S: New South Wales, 2121 1288 | S: Australia 1289 | 1290 | N: Carlos E. Gorges 1291 | E: carlos@techlinux.com.br 1292 | D: fix smp support on cmpci driver 1293 | P: 2048G/EA3C4B19 FF31 33A6 0362 4915 B7EB E541 17D0 0379 EA3C 4B19 1294 | S: Brazil 1295 | 1296 | N: Dmitry S. Gorodchanin 1297 | E: pgmdsg@ibi.com 1298 | D: RISCom/8 driver, misc kernel fixes. 1299 | S: 4 Main Street 1300 | S: Woodbridge, Connecticut 06525 1301 | S: USA 1302 | 1303 | N: Paul Gortmaker 1304 | E: p_gortmaker@yahoo.com 1305 | D: Author of RTC driver & several net drivers, Ethernet & BootPrompt Howto. 1306 | D: Made support for modules, ramdisk, generic-serial, etc. optional. 1307 | D: Transformed old user space bdflush into 1st kernel thread - kflushd. 1308 | D: Many other patches, documentation files, mini kernels, utilities, ... 1309 | 1310 | N: Masanori GOTO 1311 | E: gotom@debian.or.jp 1312 | D: Workbit NinjaSCSI-32Bi/UDE driver 1313 | S: Japan 1314 | 1315 | N: John E. Gotts 1316 | E: jgotts@linuxsavvy.com 1317 | D: kernel hacker 1318 | S: 8124 Constitution Apt. 7 1319 | S: Sterling Heights, Michigan 48313 1320 | S: USA 1321 | 1322 | N: Wolfgang Grandegger 1323 | E: wg@grandegger.com 1324 | D: Controller Area Network (device drivers) 1325 | 1326 | N: William Greathouse 1327 | E: wgreathouse@smva.com 1328 | E: wgreathouse@myfavoritei.com 1329 | D: Current Belkin USB Serial Adapter F5U103 hacker 1330 | D: Kernel hacker, embedded systems 1331 | S: 7802 Fitzwater Road 1332 | S: Brecksville, OH 44141-1334 1333 | S: USA 1334 | 1335 | N: Tristan Greaves 1336 | E: tristan@extricate.org 1337 | W: http://www.extricate.org/ 1338 | D: Miscellaneous ipv4 sysctl patches 1339 | 1340 | N: Michael A. Griffith 1341 | E: grif@cs.ucr.edu 1342 | W: http://www.cs.ucr.edu/~grif 1343 | D: Loopback speedup, qlogic SCSI hacking, VT_LOCKSWITCH 1344 | S: Department of Computer Science 1345 | S: University of California, Riverside 1346 | S: Riverside, California 92521-0304 1347 | S: USA 1348 | 1349 | N: Hans Grobler 1350 | E: grobh@sun.ac.za 1351 | D: Various AX.25/ROSE/NETROM + hamradio driver patches 1352 | D: Various X.25/LABP + driver patches 1353 | D: Misc kernel fixes and updates 1354 | S: Department of Electronic Engineering 1355 | S: University of Stellenbosch 1356 | S: Stellenbosch, Western Cape 1357 | S: South Africa 1358 | 1359 | N: Grant Grundler 1360 | E: grundler@parisc-linux.org 1361 | W: http://obmouse.sourceforge.net/ 1362 | W: http://www.parisc-linux.org/ 1363 | D: obmouse - rewrote Olivier Florent's Omnibook 600 "pop-up" mouse driver 1364 | D: PA-RISC - Interrupt/PCI HBA/IOMMU author and architect 1365 | S: Mountain View, California 1366 | S: USA 1367 | 1368 | N: Grant Guenther 1369 | E: grant@torque.net 1370 | W: http://www.torque.net/linux-pp.html 1371 | D: original author of ppa driver for parallel port ZIP drive 1372 | D: original architect of the parallel-port sharing scheme 1373 | D: PARIDE subsystem: drivers for parallel port IDE & ATAPI devices 1374 | S: 44 St. Joseph Street, Suite 506 1375 | S: Toronto, Ontario, M4Y 2W4 1376 | S: Canada 1377 | 1378 | N: Richard Günther 1379 | E: rguenth@tat.physik.uni-tuebingen.de 1380 | W: http://www.tat.physik.uni-tuebingen.de/~rguenth 1381 | P: 2048/2E829319 2F 83 FC 93 E9 E4 19 E2 93 7A 32 42 45 37 23 57 1382 | D: binfmt_misc 1383 | S: 72074 Tübingen 1384 | S: Germany 1385 | 1386 | N: Justin Guyett 1387 | E: jguyett@andrew.cmu.edu 1388 | D: via-rhine net driver hacking 1389 | 1390 | N: Danny ter Haar 1391 | E: dth@cistron.nl 1392 | D: /proc/cpuinfo, reboot on panic , kernel pre-patch tester ;) 1393 | S: Cistron 1394 | S: PO-Box 297 1395 | S: 2400 AG, Alphen aan den Rijn 1396 | S: The Netherlands 1397 | 1398 | N: Enver Haase 1399 | E: ehaase@inf.fu-berlin.de 1400 | W: http://www.inf.fu-berlin.de/~ehaase 1401 | D: Driver for the Commodore A2232 serial board 1402 | 1403 | N: Bruno Haible 1404 | E: haible@ma2s2.mathematik.uni-karlsruhe.de 1405 | D: SysV FS, shm swapping, memory management fixes 1406 | S: 17 rue Danton 1407 | S: F - 94270 Le Kremlin-Bicêtre 1408 | S: France 1409 | 1410 | N: Jack Hammer 1411 | D: IBM ServeRAID RAID (ips) driver maintenance 1412 | 1413 | N: Greg Hankins 1414 | E: gregh@cc.gatech.edu 1415 | D: fixed keyboard driver to separate LED and locking status 1416 | S: 25360 Georgia Tech Station 1417 | S: Atlanta, Georgia 30332 1418 | S: USA 1419 | 1420 | N: Brad Hards 1421 | E: bradh@frogmouth.net 1422 | D: Various USB bits, other minor patches 1423 | 1424 | N: Angelo Haritsis 1425 | E: ah@computer.org 1426 | D: kernel patches (serial, watchdog) 1427 | D: xringd, vuzkern, greekXfonts 1428 | S: 77 Clarence Mews 1429 | S: London SE16 1GD 1430 | S: United Kingdom 1431 | 1432 | N: Jan Harkes 1433 | E: jaharkes@cs.cmu.edu 1434 | W: http://www.coda.cs.cmu.edu/ 1435 | D: Coda file system 1436 | S: Computer Science Department 1437 | S: Carnegie Mellon University 1438 | S: 5000 Forbes Avenue 1439 | S: Pittsburgh, Pennsylvania 15213 1440 | S: USA 1441 | 1442 | N: Kai Harrekilde-Petersen 1443 | E: kai.harrekilde@get2net.dk 1444 | D: Original author of the ftape-HOWTO, i82078 fdc detection code. 1445 | 1446 | N: Bart Hartgers 1447 | E: bart@etpmod.phys.tue.nl 1448 | D: MTRR emulation with Centaur MCRs 1449 | S: Gen Stedmanstraat 212 1450 | S: 5623 HZ Eindhoven 1451 | S: The Netherlands 1452 | 1453 | N: Oliver Hartkopp 1454 | E: oliver.hartkopp@volkswagen.de 1455 | W: http://www.volkswagen.de 1456 | D: Controller Area Network (network layer core) 1457 | S: Brieffach 1776 1458 | S: 38436 Wolfsburg 1459 | S: Germany 1460 | 1461 | N: Andrew Haylett 1462 | E: ajh@primag.co.uk 1463 | D: Selection mechanism 1464 | 1465 | N: Andre Hedrick 1466 | E: andre@linux-ide.org 1467 | E: andre@linuxdiskcert.org 1468 | W: http://www.linux-ide.org/ 1469 | W: http://www.linuxdiskcert.org/ 1470 | D: Random SMP kernel hacker... 1471 | D: Uniform Multi-Platform E-IDE driver 1472 | D: Active-ATA-Chipset maddness.......... 1473 | D: Ultra DMA 133/100/66/33 w/48-bit Addressing 1474 | D: ATA-Disconnect, ATA-TCQ 1475 | D: ATA-Smart Kernel Daemon 1476 | D: Serial ATA 1477 | D: ATA Command Block and Taskfile 1478 | S: Linux ATA Development (LAD) 1479 | S: Concord, CA 1480 | 1481 | N: Jochen Hein 1482 | E: jochen@jochen.org 1483 | P: 1024/4A27F015 25 72 FB E3 85 9F DE 3B CB 0A DA DA 40 77 05 6C 1484 | P: 1024D/77D4FC9B F5C5 1C20 1DFC DEC3 3107 54A4 2332 ADFC 77D4 FC9B 1485 | D: National Language Support 1486 | D: Linux Internationalization Project 1487 | D: German Localization for Linux and GNU software 1488 | S: Auf der Fittel 18 1489 | S: 53347 Alfter 1490 | S: Germany 1491 | 1492 | N: Christoph Hellwig 1493 | E: hch@infradead.org 1494 | D: all kinds of driver, filesystem & core kernel hacking 1495 | D: freevxfs driver 1496 | D: sysvfs maintainer 1497 | D: chief codingstyle nitpicker 1498 | S: Ampferstr. 50 / 4 1499 | S: 6020 Innsbruck 1500 | S: Austria 1501 | 1502 | N: Richard Henderson 1503 | E: rth@twiddle.net 1504 | E: rth@cygnus.com 1505 | D: Alpha hacker, kernel and userland 1506 | S: 1668 California St. 1507 | S: Mountain View, California 94041 1508 | S: USA 1509 | 1510 | N: Benjamin Herrenschmidt 1511 | E: benh@kernel.crashing.org 1512 | D: Various parts of PPC/PPC64 & PowerMac 1513 | S: 312/107 Canberra Avenue 1514 | S: Griffith, ACT 2603 1515 | S: Australia 1516 | 1517 | N: Andreas Herrmann 1518 | E: herrmann.der.user@gmail.com 1519 | E: herrmann.der.user@googlemail.com 1520 | D: Key developer of x86/AMD64 1521 | D: Author of AMD family 15h processor power monitoring driver 1522 | D: Maintainer of AMD Athlon 64 and Opteron processor frequency driver 1523 | S: Germany 1524 | 1525 | N: Sebastian Hetze 1526 | E: she@lunetix.de 1527 | D: German Linux Documentation, 1528 | D: Organization of German Linux Conferences 1529 | S: Danckelmannstr. 48 1530 | S: 14059 Berlin 1531 | S: Germany 1532 | 1533 | N: David Hinds 1534 | E: dahinds@users.sourceforge.net 1535 | W: http://tao.stanford.edu/~dhinds 1536 | D: PCMCIA and CardBus stuff, PCMCIA-HOWTO, PCMCIA client drivers 1537 | S: 2019 W. Middlefield Rd #1 1538 | S: Mountain View, CA 94043 1539 | S: USA 1540 | 1541 | N: Michael Hipp 1542 | E: hippm@informatik.uni-tuebingen.de 1543 | D: drivers for the racal ni5210 & ni6510 Ethernet-boards 1544 | S: Talstr. 1 1545 | S: D - 72072 Tuebingen 1546 | S: Germany 1547 | 1548 | N: Richard Hirst 1549 | E: richard@sleepie.demon.co.uk 1550 | E: rhirst@linuxcare.com 1551 | W: http://www.sleepie.demon.co.uk/ 1552 | D: linux-m68k VME support 1553 | D: PA-RISC port, scsi and network drivers 1554 | D: 53c700/53c710 driver author, 82596 driver maintainer 1555 | S: United Kingdom 1556 | 1557 | N: Jauder Ho 1558 | E: jauderho@carumba.com 1559 | W: http://www.carumba.com/ 1560 | D: bug toaster (A1 sauce makes all the difference) 1561 | D: Random linux hacker 1562 | 1563 | N: Tim Hockin 1564 | E: thockin@hockin.org 1565 | W: http://www.hockin.org/~thockin 1566 | D: Natsemi ethernet 1567 | D: Cobalt Networks (x86) support 1568 | D: This-and-That 1569 | 1570 | N: Mark M. Hoffman 1571 | E: mhoffman@lightlink.com 1572 | D: asb100, lm93 and smsc47b397 hardware monitoring drivers 1573 | D: hwmon subsystem core 1574 | D: hwmon subsystem maintainer 1575 | D: i2c-sis96x and i2c-stub SMBus drivers 1576 | S: USA 1577 | 1578 | N: Dirk Hohndel 1579 | E: hohndel@suse.de 1580 | D: The XFree86[tm] Project 1581 | D: USB mouse maintainer 1582 | S: SuSE Rhein/Main AG 1583 | S: Mergenthalerallee 45-47 1584 | S: 65760 Eschborn 1585 | S: Germany 1586 | 1587 | N: Kenji Hollis 1588 | E: kenji@bitgate.com 1589 | W: http://www.bitgate.com/ 1590 | D: Berkshire PC Watchdog Driver 1591 | D: Small/Industrial Driver Project 1592 | 1593 | N: Nick Holloway 1594 | E: Nick.Holloway@pyrites.org.uk 1595 | W: http://www.pyrites.org.uk/ 1596 | P: 1024/36115A04 F4E1 3384 FCFD C055 15D6 BA4C AB03 FBF8 3611 5A04 1597 | D: Occasional Linux hacker... 1598 | S: (ask for current address) 1599 | S: United Kingdom 1600 | 1601 | N: Ron Holt 1602 | E: ron@holt.org 1603 | E: rholt@netcom.com 1604 | W: http://www.holt.org/ 1605 | W: http://www.ronholt.com/ 1606 | D: Kernel development 1607 | D: Kernel LDT modifications to support Wabi and Wine 1608 | S: Holtron Internetics, Inc. 1609 | S: 998 East 900 South, Suite 26 1610 | S: Provo, Utah 84606-5607 1611 | S: USA 1612 | 1613 | N: Marcel Holtmann 1614 | E: marcel@holtmann.org 1615 | W: http://www.holtmann.org 1616 | D: Maintainer of the Linux Bluetooth Subsystem 1617 | D: Author and maintainer of the various Bluetooth HCI drivers 1618 | D: Author and maintainer of the CAPI message transport protocol driver 1619 | D: Author and maintainer of the Bluetooth HID protocol driver 1620 | D: Various other Bluetooth related patches, cleanups and fixes 1621 | S: Germany 1622 | 1623 | N: Rob W. W. Hooft 1624 | E: hooft@EMBL-Heidelberg.DE 1625 | D: Shared libs for graphics-tools and for the f2c compiler 1626 | D: Some kernel programming on the floppy and sound drivers in early days 1627 | D: Some other hacks to get different kinds of programs to work for linux 1628 | S: Panoramastrasse 18 1629 | S: D-69126 Heidelberg 1630 | S: Germany 1631 | 1632 | N: Christopher Horn 1633 | E: chorn@warwick.net 1634 | D: Miscellaneous sysctl hacks 1635 | S: 36 Mudtown Road 1636 | S: Wantage, New Jersey 07461 1637 | S: USA 1638 | 1639 | N: Harald Hoyer 1640 | E: harald@redhat.com 1641 | W: http://www.harald-hoyer.de 1642 | D: ip_masq_quake 1643 | D: md boot support 1644 | S: Am Strand 5 1645 | S: D-19063 Schwerin 1646 | S: Germany 1647 | 1648 | N: Jan Hubicka 1649 | E: hubicka@freesoft.cz 1650 | E: hubicka@suse.cz 1651 | W: http://www.paru.cas.cz/~hubicka/ 1652 | D: Random kernel tweaks and fixes. 1653 | S: Dukelskych bojovniku 1944 1654 | S: Tabor 390 03 1655 | S: Czech Republic 1656 | 1657 | N: David Huggins-Daines 1658 | E: dhd@debian.org 1659 | E: dhd@eradicator.org 1660 | E: dhd@cepstral.com 1661 | D: PA-RISC port 1662 | D: Nubus subsystem 1663 | D: Generic 68k Macintosh framebuffer driver 1664 | D: STI framebuffer tweaks 1665 | D: LTPC driver tweaks 1666 | S: 110 S. 12th St., Apt. A 1667 | S: Pittsburgh, PA 15203-1250 1668 | S: USA 1669 | 1670 | N: Gareth Hughes 1671 | E: gareth.hughes@acm.org 1672 | D: Pentium III FXSR, SSE support 1673 | D: Author/maintainer of most DRM drivers (especially ATI, MGA) 1674 | D: Core DRM templates, general DRM and 3D-related hacking 1675 | S: No fixed address 1676 | 1677 | N: Kenn Humborg 1678 | E: kenn@wombat.ie 1679 | D: Mods to loop device to support sparse backing files 1680 | S: Ballinagard 1681 | S: Roscommon 1682 | S: Ireland 1683 | 1684 | N: Michael Hunold 1685 | E: michael@mihu.de 1686 | W: http://www.mihu.de/linux/ 1687 | D: Generic saa7146 video4linux-2 driver core, 1688 | D: Driver for the "Multimedia eXtension Board", "dpc7146", 1689 | D: "Hexium Orion", "Hexium Gemini" 1690 | 1691 | N: Miguel de Icaza Amozurrutia 1692 | E: miguel@nuclecu.unam.mx 1693 | D: Linux/SPARC team, Midnight Commander maintainer 1694 | S: Avenida Copilco 162, 22-1003 1695 | S: Mexico, DF 1696 | S: Mexico 1697 | 1698 | N: Ian Jackson 1699 | E: iwj10@cus.cam.ac.uk 1700 | E: ijackson@nyx.cs.du.edu 1701 | D: FAQ maintainer and poster of the daily postings 1702 | D: FSSTND group member 1703 | D: Debian core team member and maintainer of several Debian packages 1704 | S: 2 Lexington Close 1705 | S: Cambridge 1706 | S: CB3 0DS 1707 | S: United Kingdom 1708 | 1709 | N: Andreas Jaeger 1710 | E: aj@suse.de 1711 | D: Various smaller kernel fixes 1712 | D: glibc developer 1713 | S: Gottfried-Kinkel-Str. 18 1714 | S: D 67659 Kaiserslautern 1715 | S: Germany 1716 | 1717 | N: Mike Jagdis 1718 | E: jaggy@purplet.demon.co.uk 1719 | E: Mike.Jagdis@purplet.demon.co.uk 1720 | D: iBCS personalities, socket and X interfaces, x.out loader, syscalls... 1721 | D: Purple Distribution maintainer 1722 | D: UK FidoNet support 1723 | D: ISODE && PP 1724 | D: Kernel and device driver hacking 1725 | S: 280 Silverdale Road 1726 | S: Earley 1727 | S: Reading 1728 | S: RG6 2NU 1729 | S: United Kingdom 1730 | 1731 | N: Dave Jeffery 1732 | E: dhjeffery@gmail.com 1733 | D: SCSI hacks and IBM ServeRAID RAID driver maintenance 1734 | 1735 | N: Jakub Jelinek 1736 | E: jakub@redhat.com 1737 | W: http://sunsite.mff.cuni.cz/~jj 1738 | P: 1024/0F7623C5 53 95 71 3C EB 73 99 97 02 49 40 47 F9 19 68 20 1739 | D: Sparc hacker, SILO, mc 1740 | D: Maintain sunsite.mff.cuni.cz 1741 | S: K osmidomkum 723 1742 | S: 160 00 Praha 6 1743 | S: Czech Republic 1744 | 1745 | N: Niels Kristian Bech Jensen 1746 | E: nkbj1970@hotmail.com 1747 | D: Miscellaneous kernel updates and fixes. 1748 | 1749 | N: Michael K. Johnson 1750 | E: johnsonm@redhat.com 1751 | W: http://www.redhat.com/~johnsonm 1752 | P: 1024/4536A8DD 2A EC 88 08 40 64 CE D8 DD F8 12 2B 61 43 83 15 1753 | D: The Linux Documentation Project 1754 | D: Kernel Hackers' Guide 1755 | D: Procps 1756 | D: Proc filesystem 1757 | D: Maintain tsx-11.mit.edu 1758 | D: LP driver 1759 | S: 201 Howell Street, Apartment 1C 1760 | S: Chapel Hill, North Carolina 27514-4818 1761 | S: USA 1762 | 1763 | N: Dave Jones 1764 | E: davej@codemonkey.org.uk 1765 | W: http://www.codemonkey.org.uk 1766 | D: Assorted VIA x86 support. 1767 | D: 2.5 AGPGART overhaul. 1768 | D: CPUFREQ maintenance. 1769 | D: Fedora kernel maintenance (2003-2014). 1770 | D: 'Trinity' and similar fuzz testing work. 1771 | D: Misc/Other. 1772 | 1773 | N: Martin Josfsson 1774 | E: gandalf@wlug.westbo.se 1775 | P: 1024D/F6B6D3B1 7610 7CED 5C34 4AA6 DBA2 8BE1 5A6D AF95 F6B6 D3B1 1776 | D: netfilter: SAME target 1777 | D: netfilter: helper target 1778 | D: netfilter: various other hacks 1779 | S: Ronneby 1780 | S: Sweden 1781 | 1782 | N: Ani Joshi 1783 | E: ajoshi@shell.unixbox.com 1784 | D: fbdev hacking 1785 | 1786 | N: Jesper Juhl 1787 | E: jj@chaosbits.net 1788 | D: Various fixes, cleanups and minor features all over the tree. 1789 | D: Wrote initial version of the hdaps driver (since passed on to others). 1790 | S: Lemnosvej 1, 3.tv 1791 | S: 2300 Copenhagen S. 1792 | S: Denmark 1793 | 1794 | N: Jozsef Kadlecsik 1795 | E: kadlec@blackhole.kfki.hu 1796 | P: 1024D/470DB964 4CB3 1A05 713E 9BF7 FAC5 5809 DD8C B7B1 470D B964 1797 | D: netfilter: TCP window tracking code 1798 | D: netfilter: raw table 1799 | D: netfilter: iprange match 1800 | D: netfilter: new logging interfaces 1801 | D: netfilter: various other hacks 1802 | S: Tata 1803 | S: Hungary 1804 | 1805 | N: Bernhard Kaindl 1806 | E: bkaindl@netway.at 1807 | E: edv@bartelt.via.at 1808 | D: Author of a menu based configuration tool, kmenu, which 1809 | D: is the predecessor of 'make menuconfig' and 'make xconfig'. 1810 | D: digiboard driver update(modularisation work and 2.1.x upd) 1811 | S: Tallak 95 1812 | S: 8103 Rein 1813 | S: Austria 1814 | 1815 | N: Mitsuru Kanda 1816 | E: mk@linux-ipv6.org 1817 | E: mk@isl.rdc.toshiba.co.jp 1818 | E: mk@karaba.org 1819 | W: http://www.karaba.org/~mk/ 1820 | P: 1024D/2EC7E30D 4DC3 949B 5A6C F0D6 375F 4472 8888 A8E1 2EC7 E30D 1821 | D: IPsec, IPv6 1822 | D: USAGI/WIDE Project, TOSHIBA CORPORATION 1823 | S: 2-47-8, Takinogawa, 1824 | S: Kita, Tokyo 114-0023 1825 | S: Japan 1826 | 1827 | N: Jan Kara 1828 | E: jack@atrey.karlin.mff.cuni.cz 1829 | E: jack@suse.cz 1830 | D: Quota fixes for 2.2 kernel 1831 | D: Quota fixes for 2.3 kernel 1832 | D: Few other fixes in filesystem area (buffer cache, isofs, loopback) 1833 | W: http://atrey.karlin.mff.cuni.cz/~jack/ 1834 | S: Krosenska' 543 1835 | S: 181 00 Praha 8 1836 | S: Czech Republic 1837 | 1838 | N: Jan "Yenya" Kasprzak 1839 | E: kas@fi.muni.cz 1840 | D: Author of the COSA/SRP sync serial board driver. 1841 | D: Port of the syncppp.c from the 2.0 to the 2.1 kernel. 1842 | P: 1024/D3498839 0D 99 A7 FB 20 66 05 D7 8B 35 FC DE 05 B1 8A 5E 1843 | W: http://www.fi.muni.cz/~kas/ 1844 | S: c/o Faculty of Informatics, Masaryk University 1845 | S: Botanicka' 68a 1846 | S: 602 00 Brno 1847 | S: Czech Republic 1848 | 1849 | N: Jakob Kemi 1850 | E: jakob.kemi@telia.com 1851 | D: V4L W9966 Webcam driver 1852 | S: Forsbyvägen 33 1853 | S: 74143 Knivsta 1854 | S: Sweden 1855 | 1856 | N: Fred N. van Kempen 1857 | E: waltje@linux.com 1858 | D: NET-2 1859 | D: Drivers 1860 | D: Kernel cleanups 1861 | S: Korte Heul 95 1862 | S: 1403 ND BUSSUM 1863 | S: The Netherlands 1864 | 1865 | N: Martin Kepplinger 1866 | E: martink@posteo.de 1867 | E: martin.kepplinger@ginzinger.com 1868 | W: http://www.martinkepplinger.com 1869 | D: mma8452 accelerators iio driver 1870 | D: pegasus_notetaker input driver 1871 | D: Kernel fixes and cleanups 1872 | S: Garnisonstraße 26 1873 | S: 4020 Linz 1874 | S: Austria 1875 | 1876 | N: Karl Keyte 1877 | E: karl@koft.com 1878 | D: Disk usage statistics and modifications to line printer driver 1879 | S: 26a Sheen Road 1880 | S: Richmond 1881 | S: Surrey 1882 | S: TW9 1AE 1883 | S: United Kingdom 1884 | 1885 | N: Marko Kiiskila 1886 | E: marko@iprg.nokia.com 1887 | D: Author of ATM Lan Emulation 1888 | S: 660 Harvard Ave. #7 1889 | S: Santa Clara, CA 95051 1890 | S: USA 1891 | 1892 | N: Russell King 1893 | E: rmk@arm.linux.org.uk 1894 | D: Linux/arm integrator, maintainer & hacker 1895 | D: Acornfb, Cyber2000fb author 1896 | S: Burgh Heath, Tadworth, Surrey. 1897 | S: England 1898 | 1899 | N: Olaf Kirch 1900 | E: okir@monad.swb.de 1901 | D: Author of the Linux Network Administrators' Guide 1902 | S: Kattreinstr 38 1903 | S: D-64295 1904 | S: Germany 1905 | 1906 | N: Avi Kivity 1907 | E: avi.kivity@gmail.com 1908 | D: Kernel-based Virtual Machine (KVM) 1909 | S: Ra'annana, Israel 1910 | 1911 | N: Andi Kleen 1912 | E: andi@firstfloor.org 1913 | W: http://www.halobates.de 1914 | D: network, x86, NUMA, various hacks 1915 | S: Schwalbenstr. 96 1916 | S: 85551 Ottobrunn 1917 | S: Germany 1918 | 1919 | N: Ian Kluft 1920 | E: ikluft@thunder.sbay.org 1921 | W: http://www.kluft.com/~ikluft/ 1922 | D: NET-1 beta testing & minor patches, original Smail binary packages for 1923 | D: Slackware and Debian, vote-taker for 2nd comp.os.linux reorganization 1924 | S: Post Office Box 611311 1925 | S: San Jose, California 95161-1311 1926 | S: USA 1927 | 1928 | N: Thorsten Knabe 1929 | E: Thorsten Knabe 1930 | E: Thorsten Knabe 1931 | W: http://www.student.informatik.tu-darmstadt.de/~tek 1932 | W: http://www.tu-darmstadt.de/~tek01 1933 | P: 1024/3BC8D885 8C 29 C5 0A C0 D1 D6 F4 20 D4 2D AB 29 F6 D0 60 1934 | D: AD1816 sound driver 1935 | S: Am Bergfried 10 1936 | S: 63225 Langen 1937 | S: Germany 1938 | 1939 | N: Alain L. Knaff 1940 | E: Alain.Knaff@lll.lu 1941 | D: floppy driver 1942 | S: 19, rue Jean l'Aveugle 1943 | S: L-1148 Luxembourg-City 1944 | S: Luxembourg 1945 | 1946 | N: Gerd Knorr 1947 | W: http://bytesex.org 1948 | E: kraxel@bytesex.org 1949 | E: kraxel@suse.de 1950 | D: video4linux, bttv, vesafb, some scsi, misc fixes 1951 | 1952 | N: Hans J. Koch 1953 | D: USERSPACE I/O, MAX6650 1954 | D: Hans passed away in June 2016, and will be greatly missed. 1955 | W: https://lwn.net/Articles/691000/ 1956 | 1957 | N: Harald Koenig 1958 | E: koenig@tat.physik.uni-tuebingen.de 1959 | D: XFree86 (S3), DCF77, some kernel hacks and fixes 1960 | S: Koenigsberger Str. 90 1961 | S: D-72336 Balingen 1962 | S: Germany 1963 | 1964 | N: Rudolf Koenig 1965 | E: rfkoenig@immd4.informatik.uni-erlangen.de 1966 | D: The Linux Support Team Erlangen 1967 | 1968 | N: Andreas Koensgen 1969 | E: ajk@comnets.uni-bremen.de 1970 | D: 6pack driver for AX.25 1971 | 1972 | N: Harald Koerfgen 1973 | E: hkoerfg@web.de 1974 | D: Linux/MIPS kernel hacks and fixes, 1975 | D: DECstation port, Sharp Mobilon port 1976 | S: D-50931 Koeln 1977 | S: Germany 1978 | 1979 | N: Willy Konynenberg 1980 | E: willy@xos.nl 1981 | W: http://www.xos.nl/ 1982 | D: IP transparent proxy support 1983 | S: X/OS Experts in Open Systems BV 1984 | S: Kruislaan 419 1985 | S: 1098 VA Amsterdam 1986 | S: The Netherlands 1987 | 1988 | N: Goran Koruga 1989 | E: korugag@siol.net 1990 | D: cpufrequtils (precursor to cpupowerutils) 1991 | S: Slovenia 1992 | 1993 | N: Jiri Kosina 1994 | E: jikos@jikos.cz 1995 | E: jkosina@suse.cz 1996 | D: Generic HID layer - original code split, fixes 1997 | D: Various ACPI fixes, keeping correct battery state through suspend 1998 | D: various lockdep annotations, autofs and other random bugfixes 1999 | S: Prague, Czech Republic 2000 | 2001 | N: Gene Kozin 2002 | E: 74604.152@compuserve.com 2003 | W: http://www.sangoma.com 2004 | D: WAN Router & Sangoma WAN drivers 2005 | S: Sangoma Technologies Inc. 2006 | S: 7170 Warden Avenue, Unit 2 2007 | S: Markham, Ontario 2008 | S: L3R 8B2 2009 | S: Canada 2010 | 2011 | N: Maxim Krasnyansky 2012 | E: maxk@qualcomm.com 2013 | W: http://vtun.sf.net 2014 | W: http://bluez.sf.net 2015 | D: Author of the Universal TUN/TAP driver 2016 | D: Author of the Linux Bluetooth Subsystem (BlueZ) 2017 | D: Various other kernel patches, cleanups and fixes 2018 | S: 2213 La Terrace Circle 2019 | S: San Jose, CA 95123 2020 | S: USA 2021 | 2022 | N: Andreas S. Krebs 2023 | E: akrebs@altavista.net 2024 | D: CYPRESS CY82C693 chipset IDE, Digital's PC-Alpha 164SX boards 2025 | 2026 | N: Greg Kroah-Hartman 2027 | E: greg@kroah.com 2028 | E: gregkh@suse.de 2029 | W: http://www.kroah.com/linux/ 2030 | D: USB Serial Converter driver framework, USB Handspring Visor driver 2031 | D: ConnectTech WHITEHeat USB driver, Generic USB Serial driver 2032 | D: USB I/O Edgeport driver, USB Serial IrDA driver 2033 | D: USB Bluetooth driver, USB Skeleton driver 2034 | D: bits and pieces of USB core code. 2035 | D: PCI Hotplug core, PCI Hotplug Compaq driver modifications 2036 | D: portions of the Linux Security Module (LSM) framework 2037 | D: parts of the driver core, debugfs. 2038 | 2039 | N: Russell Kroll 2040 | E: rkroll@exploits.org 2041 | W: http://www.exploits.org/ 2042 | D: V4L radio cards: radio-aztech (new), others (bugfixes/features) 2043 | D: Loopback block device: dynamic sizing ("max_loop" as module) 2044 | S: Post Office Box 691886 2045 | S: San Antonio, Texas 78269-1886 2046 | S: USA 2047 | 2048 | N: Denis O. Kropp 2049 | E: dok@directfb.org 2050 | D: NeoMagic framebuffer driver 2051 | S: Badensche Str. 46 2052 | S: 10715 Berlin 2053 | S: Germany 2054 | 2055 | N: Andrzej M. Krzysztofowicz 2056 | E: ankry@mif.pg.gda.pl 2057 | D: Some 8-bit XT disk driver and devfs hacking 2058 | D: Aladdin 1533/1543(C) chipset IDE 2059 | D: PIIX chipset IDE 2060 | S: ul. Matemblewska 1B/10 2061 | S: 80-283 Gdansk 2062 | S: Poland 2063 | 2064 | N: Gero Kuhlmann 2065 | E: gero@gkminix.han.de 2066 | D: mounting root via NFS 2067 | S: Donarweg 4 2068 | S: D-30657 Hannover 2069 | S: Germany 2070 | 2071 | N: Markus Kuhn 2072 | E: mskuhn@cip.informatik.uni-erlangen.de 2073 | W: http://wwwcip.informatik.uni-erlangen.de/user/mskuhn 2074 | D: Unicode, real-time, time, standards 2075 | S: Schlehenweg 9 2076 | S: D-91080 Uttenreuth 2077 | S: Germany 2078 | 2079 | N: Jaya Kumar 2080 | E: jayalk@intworks.biz 2081 | W: http://www.intworks.biz 2082 | D: Arc monochrome LCD framebuffer driver, x86 reboot fixups 2083 | D: pirq addr, CS5535 alsa audio driver 2084 | S: Gurgaon, India 2085 | S: Kuala Lumpur, Malaysia 2086 | 2087 | N: Mohit Kumar 2088 | D: ST Microelectronics SPEAr13xx PCI host bridge driver 2089 | D: Synopsys Designware PCI host bridge driver 2090 | 2091 | N: Gabor Kuti 2092 | E: seasons@falcon.sch.bme.hu 2093 | E: seasons@makosteszta.sote.hu 2094 | D: Original author of software suspend 2095 | 2096 | N: Jaroslav Kysela 2097 | E: perex@perex.cz 2098 | W: http://www.perex.cz 2099 | D: Original Author and Maintainer for HP 10/100 Mbit Network Adapters 2100 | D: ISA PnP 2101 | S: Sindlovy Dvory 117 2102 | S: 370 01 Ceske Budejovice 2103 | S: Czech Republic 2104 | 2105 | N: Bas Laarhoven 2106 | E: sjml@xs4all.nl 2107 | D: Loadable modules and ftape driver 2108 | S: J. Obrechtstr 23 2109 | S: NL-5216 GP 's-Hertogenbosch 2110 | S: The Netherlands 2111 | 2112 | N: Savio Lam 2113 | E: lam836@cs.cuhk.hk 2114 | D: Author of the dialog utility, foundation 2115 | D: for Menuconfig's lxdialog. 2116 | 2117 | N: Christoph Lameter 2118 | E: christoph@lameter.com 2119 | D: Digiboard PC/Xe and PC/Xi, Digiboard EPCA 2120 | D: NUMA support, Slab allocators, Page migration 2121 | D: Scalability, Time subsystem 2122 | 2123 | N: Paul Laufer 2124 | E: paul@laufernet.com 2125 | D: Soundblaster driver fixes, ISAPnP quirk 2126 | S: California, USA 2127 | 2128 | N: Jonathan Layes 2129 | D: ARPD support 2130 | 2131 | N: Tom Lees 2132 | E: tom@lpsg.demon.co.uk 2133 | W: http://www.lpsg.demon.co.uk/ 2134 | P: 1024/87D4D065 2A 66 86 9D 02 4D A6 1E B8 A2 17 9D 4F 9B 89 D6 2135 | D: Original author and current maintainer of 2136 | D: PnP code. 2137 | 2138 | N: David van Leeuwen 2139 | E: david@tm.tno.nl 2140 | D: Philips/LMS cm206 cdrom driver, generic cdrom driver 2141 | S: Scheltemalaan 14 2142 | S: 3817 KS Amersfoort 2143 | S: The Netherlands 2144 | 2145 | N: Volker Lendecke 2146 | E: vl@kki.org 2147 | D: Kernel smbfs (to mount WfW, NT and OS/2 network drives.) 2148 | D: NCP filesystem support (to mount NetWare volumes) 2149 | S: Von-Ossietzky-Str. 12 2150 | S: 37085 Göttingen 2151 | S: Germany 2152 | 2153 | N: Kevin Lentin 2154 | E: kevinl@cs.monash.edu.au 2155 | D: NCR53C400/T130B SCSI extension to NCR5380 driver. 2156 | S: 18 Board Street 2157 | S: Doncaster VIC 3108 2158 | S: Australia 2159 | 2160 | N: Hans Lermen 2161 | E: lermen@elserv.ffm.fgan.de 2162 | D: Author of the LOADLIN Linux loader, hacking on boot stuff 2163 | D: Coordinator of DOSEMU releases 2164 | S: Am Muehlenweg 38 2165 | S: D53424 Remagen 2166 | S: Germany 2167 | 2168 | N: Colin Leroy 2169 | E: colin@colino.net 2170 | W: http://www.geekounet.org/ 2171 | D: PowerMac adt746x fan driver 2172 | D: Random fixing of various drivers (macintosh, usb, sound) 2173 | S: Toulouse 2174 | S: France 2175 | 2176 | N: Achim Leubner 2177 | E: achim_leubner@adaptec.com 2178 | D: GDT Disk Array Controller/Storage RAID controller driver 2179 | S: ICP vortex GmbH 2180 | S: Neckarsulm 2181 | S: Germany 2182 | 2183 | N: Phil Lewis 2184 | E: beans@bucket.ualr.edu 2185 | D: Promised to send money if I would put his name in the source tree. 2186 | S: Post Office Box 371 2187 | S: North Little Rock, Arkansas 72115 2188 | S: USA 2189 | 2190 | N: Stephan Linz 2191 | E: linz@mazet.de 2192 | E: Stephan.Linz@gmx.de 2193 | W: http://www.crosswinds.net/~tuxer 2194 | D: PCILynx patch to work with 1394a PHY and without local RAM 2195 | S: (ask for current address) 2196 | S: Germany 2197 | 2198 | N: Christophe Lizzi 2199 | E: lizzi@cnam.fr 2200 | W: http://cedric.cnam.fr/personne/lizzi 2201 | D: FORE Systems 200E-series ATM network driver, sparc64 port of ATM 2202 | S: CNAM, Laboratoire CEDRIC 2203 | S: 292, rue St-Martin 2204 | S: 75141 Paris Cedex 03 2205 | S: France 2206 | 2207 | N: Siegfried "Frieder" Loeffler (dg1sek) 2208 | E: floeff@tunix.mathematik.uni-stuttgart.de, fl@LF.net 2209 | W: http://www.mathematik.uni-stuttgart.de/~floeff 2210 | D: Busmaster driver for HP 10/100 Mbit Network Adapters 2211 | S: University of Stuttgart, Germany and 2212 | S: Ecole Nationale Superieure des Telecommunications, Paris 2213 | S: France 2214 | 2215 | N: Jamie Lokier 2216 | E: jamie@shareable.org 2217 | W: http://www.shareable.org/ 2218 | D: Reboot-through-BIOS for broken 486 motherboards 2219 | D: Parport fixes, futex improvements 2220 | D: First instruction of x86 sysenter path :) 2221 | S: 51 Sunningwell Road 2222 | S: Oxford 2223 | S: OX1 4SZ 2224 | S: United Kingdom 2225 | 2226 | N: Mark Lord 2227 | E: mlord@pobox.com 2228 | D: EIDE driver, hd.c support 2229 | D: EIDE PCI and bus-master DMA support 2230 | D: Hard Disk Parameter (hdparm) utility 2231 | S: 33 Ridgefield Cr 2232 | S: Nepean, Ontario 2233 | S: Canada K2H 6S3 2234 | 2235 | N: Warner Losh 2236 | E: imp@village.org 2237 | D: Linux/MIPS Deskstation support, Provided OI/OB for Linux 2238 | S: 8786 Niwot Road 2239 | S: Niwot, Colorado 80503 2240 | S: USA 2241 | 2242 | N: Robert M. Love 2243 | E: rml@tech9.net 2244 | E: rml@novell.com 2245 | D: misc. kernel hacking and debugging 2246 | S: Cambridge, MA 02139 2247 | S: USA 2248 | 2249 | N: Martin von Löwis 2250 | E: loewis@informatik.hu-berlin.de 2251 | D: script binary format 2252 | D: NTFS driver 2253 | 2254 | N: H.J. Lu 2255 | E: hjl@gnu.ai.mit.edu 2256 | D: GCC + libraries hacker 2257 | 2258 | N: Yanir Lubetkin 2259 | E: yanirx.lubatkin@intel.com 2260 | E: linux-wimax@intel.com 2261 | D: Intel Wireless WiMAX Connection 2400 driver 2262 | 2263 | N: Michal Ludvig 2264 | E: michal@logix.cz 2265 | E: michal.ludvig@asterisk.co.nz 2266 | W: http://www.logix.cz/michal 2267 | P: 1024D/C45B2218 1162 6471 D391 76E0 9F99 29DA 0C3A 2509 C45B 2218 2268 | D: VIA PadLock driver 2269 | D: Netfilter pkttype module 2270 | S: Asterisk Ltd. 2271 | S: Auckland 2272 | S: New Zealand 2273 | 2274 | N: Tuomas J. Lukka 2275 | E: Tuomas.Lukka@Helsinki.FI 2276 | D: Original dual-monitor patches 2277 | D: Console-mouse-tracking patches 2278 | S: Puistokaari 1 E 18 2279 | S: 00200 Helsinki 2280 | S: Finland 2281 | 2282 | N: Daniel J. Maas 2283 | E: dmaas@dcine.com 2284 | W: http://www.maasdigital.com 2285 | D: dv1394 2286 | 2287 | N: Hamish Macdonald 2288 | E: hamishm@lucent.com 2289 | D: Linux/68k port 2290 | S: 32 Clydesdale Avenue 2291 | S: Kanata, Ontario 2292 | S: Canada K2M-2G7 2293 | 2294 | N: Peter MacDonald 2295 | D: SLS distribution 2296 | D: Initial implementation of VC's, pty's and select() 2297 | 2298 | N: Pavel Machek 2299 | E: pavel@ucw.cz 2300 | P: 4096R/92DFCE96 4FA7 9EEF FCD4 C44F C585 B8C7 C060 2241 92DF CE96 2301 | D: Softcursor for vga, hypertech cdrom support, vcsa bugfix, nbd, 2302 | D: sun4/330 port, capabilities for elf, speedup for rm on ext2, USB, 2303 | D: work on suspend-to-ram/disk, killing duplicates from ioctl32, 2304 | D: Altera SoCFPGA and Nokia N900 support. 2305 | S: Czech Republic 2306 | 2307 | N: Paul Mackerras 2308 | E: paulus@samba.org 2309 | D: PPP driver 2310 | D: Linux for PowerPC 2311 | D: Linux port for PCI Power Macintosh 2312 | 2313 | N: Pat Mackinlay 2314 | E: pat@it.com.au 2315 | D: 8 bit XT hard disk driver 2316 | D: Miscellaneous ST0x, TMC-8xx and other SCSI hacking 2317 | S: 25 McMillan Street 2318 | S: Victoria Park 6100 2319 | S: Australia 2320 | 2321 | N: James B. MacLean 2322 | E: macleajb@ednet.ns.ca 2323 | W: http://www.ednet.ns.ca/~macleajb/dosemu.html 2324 | D: Former Coordinator of DOSEMU releases 2325 | D: Program in DOSEMU 2326 | S: PO BOX 220, HFX. CENTRAL 2327 | S: Halifax, Nova Scotia 2328 | S: Canada B3J 3C8 2329 | 2330 | N: Kai Mäkisara 2331 | E: Kai.Makisara@kolumbus.fi 2332 | D: SCSI Tape Driver 2333 | 2334 | N: Asit Mallick 2335 | E: asit.k.mallick@intel.com 2336 | D: Linux/IA-64 2337 | S: 2200 Mission College Blvd 2338 | S: Santa Clara, CA 95052 2339 | S: USA 2340 | 2341 | N: Petko Manolov 2342 | E: petkan@users.sourceforge.net 2343 | D: USB ethernet pegasus/pegasus-II driver 2344 | D: USB ethernet rtl8150 driver 2345 | D: optimizing i[45]86 string routines 2346 | D: i386 task switching hacks 2347 | S: 482 Shadowgraph Dr. 2348 | S: San Jose, CA 95110 2349 | S: USA 2350 | 2351 | N: Martin Mares 2352 | E: mj@ucw.cz 2353 | W: http://www.ucw.cz/~mj/ 2354 | D: BIOS video mode handling code 2355 | D: MOXA C-218 serial board driver 2356 | D: Network autoconfiguration 2357 | D: PCI subsystem 2358 | D: Random kernel hacking 2359 | S: Kankovskeho 1241 2360 | S: 182 00 Praha 8 2361 | S: Czech Republic 2362 | 2363 | N: John A. Martin 2364 | E: jam@acm.org 2365 | W: http://www.tux.org/~jam/ 2366 | P: 1024/04456D53 9D A3 6C 6B 88 80 8A 61 D7 06 22 4F 95 40 CE D2 2367 | P: 1024/3B986635 5A61 7EE6 9E20 51FB 59FB 2DA5 3E18 DD55 3B98 6635 2368 | D: FSSTND contributor 2369 | D: Credit file compilator 2370 | 2371 | N: Kevin E. Martin 2372 | E: martin@cs.unc.edu 2373 | D: Developed original accelerated X servers included in XFree86 2374 | D: XF86_Mach64 2375 | D: XF86_Mach32 2376 | D: XF86_Mach8 2377 | D: XF86_8514 2378 | D: cfdisk (curses based disk partitioning program) 2379 | 2380 | N: John S. Marvin 2381 | E: jsm@fc.hp.com 2382 | D: PA-RISC port 2383 | S: Hewlett Packard 2384 | S: MS 42 2385 | S: 3404 E. Harmony Road 2386 | S: Fort Collins, CO 80528 2387 | S: USA 2388 | 2389 | N: Torben Mathiasen 2390 | E: torben.mathiasen@compaq.com 2391 | E: torben@kernel.dk 2392 | W: http://tlan.kernel.dk 2393 | D: ThunderLAN maintainer 2394 | D: ThunderLAN updates and other kernel fixes. 2395 | S: Bremensgade 29, st.th 2396 | S: 2300 Copenhagen S 2397 | S: Denmark 2398 | 2399 | N: Claudio S. Matsuoka 2400 | E: cmatsuoka@gmail.com 2401 | E: claudio@mandriva.com 2402 | W: http://helllabs.org/~claudio 2403 | D: V4L, OV511 and HDA-codec hacks 2404 | S: Conectiva S.A. 2405 | S: Souza Naves 1250 2406 | S: 80050-040 Curitiba PR 2407 | S: Brazil 2408 | 2409 | N: Heinz Mauelshagen 2410 | E: mge@EZ-Darmstadt.Telekom.de 2411 | D: Logical Volume Manager 2412 | S: Bartningstr. 12 2413 | S: 64289 Darmstadt 2414 | S: Germany 2415 | 2416 | N: Mark W. McClelland 2417 | E: mmcclell@bigfoot.com 2418 | E: mark@alpha.dyndns.org 2419 | W: http://alpha.dyndns.org/ov511/ 2420 | P: 1024D/357375CC 317C 58AC 1B39 2AB0 AB96 EB38 0B6F 731F 3573 75CC 2421 | D: OV511 driver 2422 | S: (address available on request) 2423 | S: USA 2424 | 2425 | N: Ian McDonald 2426 | E: ian.mcdonald@jandi.co.nz 2427 | E: imcdnzl@gmail.com 2428 | W: http://wand.net.nz/~iam4 2429 | W: http://imcdnzl.blogspot.com 2430 | D: DCCP, CCID3 2431 | S: Hamilton 2432 | S: New Zealand 2433 | 2434 | N: Patrick McHardy 2435 | E: kaber@trash.net 2436 | P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80 2437 | D: netfilter: endless number of bugfixes 2438 | D: netfilter: CLASSIFY target 2439 | D: netfilter: addrtype match 2440 | D: tc: HFSC scheduler 2441 | S: Freiburg 2442 | S: Germany 2443 | 2444 | N: Paul E. McKenney 2445 | E: paulmck@us.ibm.com 2446 | W: http://www.rdrop.com/users/paulmck/ 2447 | D: RCU and variants 2448 | D: rcutorture module 2449 | 2450 | N: Mike McLagan 2451 | E: mike.mclagan@linux.org 2452 | W: http://www.invlogic.com/~mmclagan 2453 | D: DLCI/FRAD drivers for Sangoma SDLAs 2454 | S: Innovative Logic Corp 2455 | S: Post Office Box 1068 2456 | S: Laurel, Maryland 20732 2457 | S: USA 2458 | 2459 | N: Bradley McLean 2460 | E: brad@bradpc.gaylord.com 2461 | D: Device driver hacker 2462 | D: General kernel debugger 2463 | S: 249 Nichols Avenue 2464 | S: Syracuse, New York 13206 2465 | S: USA 2466 | 2467 | N: Kyle McMartin 2468 | E: kyle@parisc-linux.org 2469 | D: Linux/PARISC hacker 2470 | D: AD1889 sound driver 2471 | S: Ottawa, Canada 2472 | 2473 | N: Dirk Melchers 2474 | E: dirk@merlin.nbg.sub.org 2475 | D: 8 bit XT hard disk driver for OMTI5520 2476 | S: Schloessleinsgasse 31 2477 | S: D-90453 Nuernberg 2478 | S: Germany 2479 | 2480 | N: Arnaldo Carvalho de Melo 2481 | E: acme@kernel.org 2482 | E: arnaldo.melo@gmail.com 2483 | E: acme@redhat.com 2484 | P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01 2485 | D: tools/, IPX, LLC, DCCP, cyc2x, wl3501_cs, net/ hacks 2486 | S: Brazil 2487 | 2488 | N: Karsten Merker 2489 | E: merker@linuxtag.org 2490 | D: DECstation framebuffer drivers 2491 | S: Germany 2492 | 2493 | N: Michael Meskes 2494 | E: meskes@debian.org 2495 | P: 1024/04B6E8F5 6C 77 33 CA CC D6 22 03 AB AB 15 A3 AE AD 39 7D 2496 | D: Kernel hacker. PostgreSQL hacker. Software watchdog daemon. 2497 | D: Maintainer of several Debian packages 2498 | S: Th.-Heuss-Str. 61 2499 | S: D-41812 Erkelenz 2500 | S: Germany 2501 | 2502 | N: Nigel Metheringham 2503 | E: Nigel.Metheringham@ThePLAnet.net 2504 | P: 1024/31455639 B7 99 BD B8 00 17 BD 46 C1 15 B8 AB 87 BC 25 FA 2505 | D: IP Masquerading work and minor fixes 2506 | S: Planet Online 2507 | S: The White House, Melbourne Street, LEEDS 2508 | S: LS2 7PS, United Kingdom 2509 | 2510 | N: Craig Metz 2511 | E: cmetz@inner.net 2512 | D: Some of PAS 16 mixer & PCM support, inet6-apps 2513 | 2514 | N: William (Bill) Metzenthen 2515 | E: billm@suburbia.net 2516 | D: Author of the FPU emulator. 2517 | D: Minor kernel hacker for other lost causes (Hercules mono, etc). 2518 | S: 22 Parker Street 2519 | S: Ormond 2520 | S: Victoria 3163 2521 | S: Australia 2522 | 2523 | N: Pauline Middelink 2524 | E: middelin@polyware.nl 2525 | D: General low-level bug fixes, /proc fixes, identd support 2526 | D: Author of IP masquerading 2527 | D: Zoran ZR36120 Video For Linux driver 2528 | S: Boterkorfhoek 34 2529 | S: 7546 JA Enschede 2530 | S: Netherlands 2531 | 2532 | N: David S. Miller 2533 | E: davem@davemloft.net 2534 | D: Sparc and blue box hacker 2535 | D: Vger Linux mailing list co-maintainer 2536 | D: Linux Emacs elf/qmagic support + other libc/gcc things 2537 | D: Yee bore de yee bore! ;-) 2538 | S: 575 Harrison St. #103 2539 | S: San Francisco, CA 94105 2540 | S: USA 2541 | 2542 | N: Rick Miller 2543 | E: rdmiller@execpc.com 2544 | W: http://www.execpc.com/~rdmiller/ 2545 | D: Original Linux Device Registrar (Major/minor numbers) 2546 | D: au-play, bwBASIC 2547 | S: S78 W16203 Woods Road 2548 | S: Muskego, Wisconsin 53150 2549 | S: USA 2550 | 2551 | N: Harald Milz 2552 | E: hm@seneca.linux.de 2553 | D: Linux Projects Map, Linux Commercial-HOWTO 2554 | D: general Linux publicity in Germany, vacation port 2555 | D: UUCP and CNEWS binary packages for LST 2556 | S: Editorial Board iX Mag 2557 | S: Helstorfer Str. 7 2558 | S: D-30625 Hannover 2559 | S: Germany 2560 | 2561 | N: Corey Minyard 2562 | E: minyard@wf-rch.cirr.com 2563 | E: minyard@mvista.com 2564 | W: http://home.attbi.com/~minyard 2565 | D: Sony CDU31A CDROM Driver 2566 | D: IPMI driver 2567 | D: Various networking fixes long ago 2568 | D: Original ppc_md work 2569 | D: Shared zlib 2570 | S: 7406 Wheat Field Rd 2571 | S: Garland, Texas 75044 2572 | S: USA 2573 | 2574 | N: Kazunori Miyazawa 2575 | E: miyazawa@linux-ipv6.org 2576 | E: Kazunori.Miyazawa@jp.yokogawa.com 2577 | E: kazunori@miyazawa.org 2578 | W: http://www.miyazawa.org/~kazunori/ 2579 | D: IPsec, IPv6 2580 | D: USAGI/WIDE Project, Yokogawa Electric Corporation 2581 | S: 2-20-4-203, Nakacho, 2582 | S: Musashino, Tokyo 180-0006 2583 | S: Japan 2584 | 2585 | N: Patrick Mochel 2586 | E: mochel@osdl.org 2587 | E: mochelp@infinity.powertie.org 2588 | D: PCI Power Management, ACPI work 2589 | S: 12725 SW Millikan Way, Suite 400 2590 | S: Beaverton, Oregon 97005 2591 | S: USA 2592 | 2593 | N: Eberhard Mönkeberg 2594 | E: emoenke@gwdg.de 2595 | D: CDROM driver "sbpcd" (Matsushita/Panasonic/Soundblaster) 2596 | S: Ruhstrathöhe 2 b. 2597 | S: D-37085 Göttingen 2598 | S: Germany 2599 | 2600 | N: Thomas Molina 2601 | E: tmolina@cablespeed.com 2602 | D: bug fixes, documentation, minor hackery 2603 | 2604 | N: Paul Moore 2605 | E: paul.moore@hp.com 2606 | D: NetLabel author 2607 | S: Hewlett-Packard 2608 | S: 110 Spit Brook Road 2609 | S: Nashua, NH 03062 2610 | 2611 | N: James Morris 2612 | E: jmorris@namei.org 2613 | W: http://namei.org/ 2614 | D: Netfilter, Linux Security Modules (LSM), SELinux, IPSec, 2615 | D: Crypto API, general networking, miscellaneous. 2616 | S: PO Box 707 2617 | S: Spit Junction NSW 2088 2618 | S: Australia 2619 | 2620 | N: David Mosberger-Tang 2621 | E: davidm@hpl.hp.com if IA-64 related, else David.Mosberger@acm.org 2622 | D: Linux/Alpha and Linux/ia64 2623 | S: 35706 Runckel Lane 2624 | S: Fremont, California 94536 2625 | S: USA 2626 | 2627 | N: Sam Mosel 2628 | E: sam.mosel@computer.org 2629 | D: Wacom Intuos USB Support 2630 | S: 22 Seaview St 2631 | S: Fullarton 5063 2632 | S: South Australia 2633 | 2634 | N: Wolfgang Muees 2635 | E: wolfgang@iksw-muees.de 2636 | D: Auerswald USB driver 2637 | 2638 | N: Paul Mundt 2639 | E: paul.mundt@gmail.com 2640 | D: SuperH maintainer 2641 | 2642 | N: Ian A. Murdock 2643 | E: imurdock@gnu.ai.mit.edu 2644 | D: Creator of Debian distribution 2645 | S: 30 White Tail Lane 2646 | S: Lafayette, Indiana 47905 2647 | S: USA 2648 | 2649 | N: Scott Murray 2650 | E: scottm@somanetworks.com 2651 | E: scott@spiteful.org 2652 | D: OPL3-SA2, OPL3-SA3 sound driver 2653 | D: CompactPCI hotplug core 2654 | D: Ziatech ZT5550 and generic CompactPCI hotplug drivers 2655 | S: Toronto, Ontario 2656 | S: Canada 2657 | 2658 | N: Zwane Mwaikambo 2659 | E: zwanem@gmail.com 2660 | D: Various driver hacking 2661 | D: Lowlevel x86 kernel hacking 2662 | D: General debugging 2663 | S: (ask for current address) 2664 | S: Tanzania 2665 | 2666 | N: Trond Myklebust 2667 | E: trond.myklebust@fys.uio.no 2668 | D: current NFS client hacker. 2669 | S: Dagaliveien 31e 2670 | S: N-0391 Oslo 2671 | S: Norway 2672 | 2673 | N: Johan Myreen 2674 | E: jem@iki.fi 2675 | D: PS/2 mouse driver writer etc. 2676 | S: Dragonvagen 1 A 13 2677 | S: FIN-00330 Helsingfors 2678 | S: Finland 2679 | 2680 | N: Matija Nalis 2681 | E: mnalis@jagor.srce.hr 2682 | E: mnalis@voyager.hr 2683 | D: Maintainer of the Umsdos file system 2684 | S: Listopadska 7 2685 | S: 10000 Zagreb 2686 | S: Croatia 2687 | 2688 | N: Jonathan Naylor 2689 | E: g4klx@g4klx.demon.co.uk 2690 | E: g4klx@amsat.org 2691 | W: http://zone.pspt.fi/~jsn/ 2692 | D: AX.25, NET/ROM and ROSE amateur radio protocol suites 2693 | D: CCITT X.25 PLP and LAPB. 2694 | S: 24 Castle View Drive 2695 | S: Cromford 2696 | S: Matlock 2697 | S: Derbyshire DE4 3RL 2698 | S: United Kingdom 2699 | 2700 | N: Ian S. Nelson 2701 | E: nelsonis@earthlink.net 2702 | P: 1024D/00D3D983 3EFD 7B86 B888 D7E2 29B6 9E97 576F 1B97 00D3 D983 2703 | D: Minor mmap and ide hacks 2704 | S: 1370 Atlantis Ave. 2705 | S: Lafayette CO, 80026 2706 | S: USA 2707 | 2708 | N: Russell Nelson 2709 | E: nelson@crynwr.com 2710 | W: http://www.crynwr.com/~nelson 2711 | P: 1024/83942741 FF 68 EE 27 A0 5A AA C3 F5 DC 05 62 BD 5B 20 2F 2712 | D: Author of cs89x0, maintainer of kernel changelog through 1.3.3 2713 | D: Wrote many packet drivers, from which some Ethernet drivers are derived. 2714 | S: 521 Pleasant Valley Road 2715 | S: Potsdam, New York 13676 2716 | S: USA 2717 | 2718 | N: Dave Neuer 2719 | E: dave.neuer@pobox.com 2720 | D: Helped implement support for Compaq's H31xx series iPAQs 2721 | D: Other mostly minor tweaks & bugfixes 2722 | 2723 | N: Michael Neuffer 2724 | E: mike@i-Connect.Net 2725 | E: neuffer@goofy.zdv.uni-mainz.de 2726 | W: http://www.i-Connect.Net/~mike/ 2727 | D: Developer and maintainer of the EATA-DMA SCSI driver 2728 | D: Co-developer EATA-PIO SCSI driver 2729 | D: /proc/scsi and assorted other snippets 2730 | S: Zum Schiersteiner Grund 2 2731 | S: 55127 Mainz 2732 | S: Germany 2733 | 2734 | N: Gustavo Niemeyer 2735 | E: niemeyer@conectiva.com 2736 | W: https://moin.conectiva.com.br/GustavoNiemeyer 2737 | D: wl3501 PCMCIA wireless card initial support for wireless extensions in 2.4 2738 | S: Conectiva S.A. 2739 | S: R. Tocantins 89 2740 | S: 80050-430 Curitiba PR 2741 | S: Brazil 2742 | 2743 | N: David C. Niemi 2744 | E: niemi@tux.org 2745 | W: http://www.tux.org/~niemi/ 2746 | D: Assistant maintainer of Mtools, fdutils, and floppy driver 2747 | D: Administrator of Tux.Org Linux Server, http://www.tux.org 2748 | S: 2364 Old Trail Drive 2749 | S: Reston, Virginia 20191 2750 | S: USA 2751 | 2752 | N: Fredrik Noring 2753 | E: noring@nocrew.org 2754 | W: http://www.lysator.liu.se/~noring/ 2755 | D: dsp56k device driver 2756 | 2757 | N: Michael O'Reilly 2758 | E: michael@iinet.com.au 2759 | E: oreillym@tartarus.uwa.edu.au 2760 | D: Wrote the original dynamic sized disk cache stuff. I think the only 2761 | D: part that remains is the GFP_KERNEL et al #defines. :) 2762 | S: 192 Nichsolson Road 2763 | S: Subiaco, 6008 2764 | S: Perth, Western Australia 2765 | S: Australia 2766 | 2767 | N: Miguel Ojeda Sandonis 2768 | E: miguel.ojeda.sandonis@gmail.com 2769 | W: http://miguelojeda.es 2770 | W: http://jair.lab.fi.uva.es/~migojed/ 2771 | D: Author of the ks0108, cfag12864b and cfag12864bfb auxiliary display drivers. 2772 | D: Maintainer of the auxiliary display drivers tree (drivers/auxdisplay/*) 2773 | S: C/ Mieses 20, 9-B 2774 | S: Valladolid 47009 2775 | S: Spain 2776 | 2777 | N: Peter Oruba 2778 | D: AMD Microcode loader driver 2779 | S: Germany 2780 | 2781 | N: Jens Osterkamp 2782 | E: jens@de.ibm.com 2783 | D: Maintainer of Spidernet network driver for Cell 2784 | 2785 | N: Gadi Oxman 2786 | E: gadio@netvision.net.il 2787 | D: Original author and maintainer of IDE/ATAPI floppy/tape drivers 2788 | 2789 | N: Greg Page 2790 | E: gpage@sovereign.org 2791 | D: IPX development and support 2792 | 2793 | N: Venkatesh Pallipadi (Venki) 2794 | D: x86/HPET 2795 | 2796 | N: David Parsons 2797 | E: orc@pell.chi.il.us 2798 | D: improved memory detection code. 2799 | 2800 | N: Ivan Passos 2801 | E: ivan@cyclades.com 2802 | D: Author of the Cyclades-PC300 synchronous card driver 2803 | D: Maintainer of the Cyclom-Y/Cyclades-Z asynchronous card driver 2804 | S: Cyclades Corp 2805 | S: 41934 Christy St 2806 | S: Fremont, CA 94538 2807 | S: USA 2808 | 2809 | N: Mikulas Patocka 2810 | E: mikulas@artax.karlin.mff.cuni.cz 2811 | W: http://artax.karlin.mff.cuni.cz/~mikulas/ 2812 | P: 1024/BB11D2D5 A0 F1 28 4A C4 14 1E CF 92 58 7A 8F 69 BC A4 D3 2813 | D: Read/write HPFS filesystem 2814 | S: Weissova 8 2815 | S: 644 00 Brno 2816 | S: Czech Republic 2817 | 2818 | N: Vojtech Pavlik 2819 | E: vojtech@suse.cz 2820 | D: Joystick driver 2821 | D: arcnet-hardware readme 2822 | D: Minor ARCnet hacking 2823 | D: USB (HID, ACM, Printer ...) 2824 | S: Ucitelska 1576 2825 | S: Prague 8 2826 | S: 182 00 Czech Republic 2827 | 2828 | N: Rick Payne 2829 | D: RFC2385 Support for TCP 2830 | 2831 | N: Barak A. Pearlmutter 2832 | E: bap@cs.unm.edu 2833 | W: http://www.cs.unm.edu/~bap/ 2834 | P: 512/602D785D 9B A1 83 CD EE CB AD 93 20 C6 4C B7 F5 E9 60 D4 2835 | D: Author of mark-and-sweep GC integrated by Alan Cox 2836 | S: Computer Science Department 2837 | S: FEC 313 2838 | S: University of New Mexico 2839 | S: Albuquerque, New Mexico 87131 2840 | S: USA 2841 | 2842 | N: Avery Pennarun 2843 | E: apenwarr@worldvisions.ca 2844 | W: http://www.worldvisions.ca/~apenwarr/ 2845 | D: ARCnet driver 2846 | D: "make xconfig" improvements 2847 | D: Various minor hacking 2848 | S: RR #5, 497 Pole Line Road 2849 | S: Thunder Bay, Ontario 2850 | S: CANADA P7C 5M9 2851 | 2852 | N: Inaky Perez-Gonzalez 2853 | E: inaky.perez-gonzalez@intel.com 2854 | E: linux-wimax@intel.com 2855 | E: inakypg@yahoo.com 2856 | D: WiMAX stack 2857 | D: Intel Wireless WiMAX Connection 2400 driver 2858 | 2859 | N: Yuri Per 2860 | E: yuri@pts.mipt.ru 2861 | D: Some smbfs fixes 2862 | S: Demonstratsii 8-382 2863 | S: Tula 300000 2864 | S: Russia 2865 | 2866 | N: Inaky Perez-Gonzalez 2867 | E: inaky.perez-gonzalez@intel.com 2868 | D: UWB stack, HWA-RC driver and HWA-HC drivers 2869 | D: Wireless USB additions to the USB stack 2870 | D: WiMedia Link Protocol bits and pieces 2871 | 2872 | N: Gordon Peters 2873 | E: GordPeters@smarttech.com 2874 | D: Isochronous receive for IEEE 1394 driver (OHCI module). 2875 | D: Bugfixes for the aforementioned. 2876 | S: Calgary, Alberta 2877 | S: Canada 2878 | 2879 | N: Johnnie Peters 2880 | E: jpeters@phx.mcd.mot.com 2881 | D: Motorola PowerPC changes for PReP 2882 | S: 2900 S. Diable Way 2883 | S: Tempe, Arizona 85282 2884 | S: USA 2885 | 2886 | N: Kirk Petersen 2887 | E: kirk@speakeasy.org 2888 | W: http://www.speakeasy.org/~kirk/ 2889 | D: implemented kmod 2890 | D: modularized BSD Unix domain sockets 2891 | 2892 | N: Martin Kasper Petersen 2893 | E: mkp@mkp.net 2894 | D: PA-RISC port 2895 | D: XFS file system 2896 | D: kiobuf based block I/O work 2897 | S: 314 Frank St. 2898 | S: Ottawa, Ontario 2899 | S: Canada K2P 0X8 2900 | 2901 | N: Mikael Pettersson 2902 | E: mikpelinux@gmail.com 2903 | D: Miscellaneous fixes 2904 | 2905 | N: Reed H. Petty 2906 | E: rhp@draper.net 2907 | W: http://www.draper.net 2908 | D: Loop device driver extensions 2909 | D: Encryption transfer modules (no export) 2910 | S: Post Office Box 1815 2911 | S: Harrison, Arkansas 72602-1815 2912 | S: USA 2913 | 2914 | N: Kai Petzke 2915 | E: petzke@teltarif.de 2916 | W: http://www.teltarif.de/ 2917 | P: 1024/B42868C1 D9 59 B9 98 BB 93 05 38 2E 3E 31 79 C3 65 5D E1 2918 | D: Driver for Laser Magnetic Storage CD-ROM 2919 | D: Some kernel bug fixes 2920 | D: Port of the database Postgres 2921 | D: Book: "Linux verstehen und anwenden" (Hanser-Verlag) 2922 | S: Triftstra=DFe 55 2923 | S: 13353 Berlin 2924 | S: Germany 2925 | 2926 | N: Emanuel Pirker 2927 | E: epirker@edu.uni-klu.ac.at 2928 | D: AIC5800 IEEE 1394, RAW I/O on 1394 2929 | D: Starter of Linux1394 effort 2930 | S: ask per mail for current address 2931 | 2932 | N: Nicolas Pitre 2933 | E: nico@fluxnic.net 2934 | D: StrongARM SA1100 support integrator & hacker 2935 | D: Xscale PXA architecture 2936 | D: unified SMC 91C9x/91C11x ethernet driver (smc91x) 2937 | S: Montreal, Quebec, Canada 2938 | 2939 | N: Ken Pizzini 2940 | E: ken@halcyon.com 2941 | D: CDROM driver "sonycd535" (Sony CDU-535/531) 2942 | 2943 | N: Stelian Pop 2944 | E: stelian@popies.net 2945 | P: 1024D/EDBB6147 7B36 0E07 04BC 11DC A7A0 D3F7 7185 9E7A EDBB 6147 2946 | D: random kernel hacks 2947 | S: Paimpont, France 2948 | 2949 | N: Pete Popov 2950 | E: pete_popov@yahoo.com 2951 | D: Linux/MIPS AMD/Alchemy Port and mips hacking and debugging 2952 | S: San Jose, CA 95134 2953 | S: USA 2954 | 2955 | N: Matt Porter 2956 | E: mporter@kernel.crashing.org 2957 | D: Motorola PowerPC PReP support 2958 | D: cPCI PowerPC support 2959 | D: Embedded PowerPC 4xx/6xx/7xx/74xx support 2960 | S: Chandler, Arizona 85249 2961 | S: USA 2962 | 2963 | N: Frederic Potter 2964 | E: fpotter@cirpack.com 2965 | D: Some PCI kernel support 2966 | 2967 | N: Rui Prior 2968 | E: rprior@inescn.pt 2969 | D: ATM device driver for NICStAR based cards 2970 | 2971 | N: Stefan Probst 2972 | E: sp@caldera.de 2973 | D: The Linux Support Team Erlangen, 1993-97 2974 | S: Caldera (Deutschland) GmbH 2975 | S: Lazarettstrasse 8 2976 | S: 91054 Erlangen 2977 | S: Germany 2978 | 2979 | N: Giuliano Procida 2980 | E: myxie@debian.org,gprocida@madge.com 2981 | D: Madge Ambassador driver (Collage 155 Server ATM adapter) 2982 | D: Madge Horizon driver (Collage 25 and 155 Client ATM adapters) 2983 | P: 1024/93898735 D3 9E F4 F7 6D 8D 2F 3A 38 BA 06 7C 2B 33 43 7D 2984 | S: Madge Networks 2985 | S: Framewood Road 2986 | S: Wexham SL3 6PJ 2987 | S: United Kingdom 2988 | 2989 | N: Richard Purdie 2990 | E: rpurdie@rpsys.net 2991 | D: Backlight subsystem maintainer 2992 | S: United Kingdom 2993 | 2994 | N: Daniel Quinlan 2995 | E: quinlan@pathname.com 2996 | W: http://www.pathname.com/~quinlan/ 2997 | D: FSSTND coordinator; FHS editor 2998 | D: random Linux documentation, patches, and hacks 2999 | S: 4390 Albany Drive #41A 3000 | S: San Jose, California 95129 3001 | S: USA 3002 | 3003 | N: Juan Quintela 3004 | E: quintela@fi.udc.es 3005 | D: Memory Management hacking 3006 | S: LFCIA 3007 | S: Departamento de Computación 3008 | S: Universidade da Coruña 3009 | S: E-15071 3010 | S: A Coruña 3011 | S: Spain 3012 | 3013 | N: Augusto Cesar Radtke 3014 | E: bishop@sekure.org 3015 | W: http://bishop.sekure.org 3016 | D: {copy,get,put}_user calls updates 3017 | D: Miscellaneous hacks 3018 | S: R. Otto Marquardt, 226 - Garcia 3019 | S: 89020-350 Blumenau - Santa Catarina 3020 | S: Brazil 3021 | 3022 | N: Goutham Rao 3023 | E: goutham.rao@intel.com 3024 | D: Linux/IA-64 3025 | S: 2200 Mission College Blvd 3026 | S: Santa Clara, CA 95052 3027 | S: USA 3028 | 3029 | N: Anil Ravindranath 3030 | E: anil_ravindranath@pmc-sierra.com 3031 | D: PMC-Sierra MaxRAID driver 3032 | 3033 | N: Eric S. Raymond 3034 | E: esr@thyrsus.com 3035 | W: http://www.tuxedo.org/~esr/ 3036 | D: terminfo master file maintainer 3037 | D: Editor: Installation HOWTO, Distributions HOWTO, XFree86 HOWTO 3038 | D: Author: fetchmail, Emacs VC mode, Emacs GUD mode 3039 | S: 6 Karen Drive 3040 | S: Malvern, Pennsylvania 19355 3041 | S: USA 3042 | 3043 | N: Stefan Reinauer 3044 | E: stepan@linux.de 3045 | W: http://www.freiburg.linux.de/~stepan/ 3046 | D: Modularization of some filesystems 3047 | D: /proc/sound, minor fixes 3048 | S: Schlossbergring 9 3049 | S: 79098 Freiburg 3050 | S: Germany 3051 | 3052 | N: Thomas Renninger 3053 | E: trenn@suse.de 3054 | D: cpupowerutils 3055 | S: SUSE Linux GmbH 3056 | S: Germany 3057 | 3058 | N: Joerg Reuter 3059 | E: jreuter@yaina.de 3060 | W: http://yaina.de/jreuter/ 3061 | W: http://www.qsl.net/dl1bke/ 3062 | D: Generic Z8530 driver, AX.25 DAMA slave implementation 3063 | D: Several AX.25 hacks 3064 | 3065 | N: Ricardo Ribalda Delgado 3066 | E: ricardo.ribalda@gmail.com 3067 | W: http://ribalda.com 3068 | D: PLX USB338x driver 3069 | D: PCA9634 driver 3070 | D: Option GTM671WFS 3071 | D: Fintek F81216A 3072 | D: AD5761 iio driver 3073 | D: Various kernel hacks 3074 | S: Qtechnology A/S 3075 | S: Valby Langgade 142 3076 | S: 2500 Valby 3077 | S: Denmark 3078 | 3079 | N: Francois-Rene Rideau 3080 | E: fare@tunes.org 3081 | W: http://www.tunes.org/~fare 3082 | D: petty kernel janitor (byteorder, ufs) 3083 | S: 6, rue Augustin Thierry 3084 | S: 75019 Paris 3085 | S: France 3086 | 3087 | N: Rik van Riel 3088 | E: riel@redhat.com 3089 | W: http://www.surriel.com/ 3090 | D: Linux-MM site, Documentation/sysctl/*, swap/mm readaround 3091 | D: kswapd fixes, random kernel hacker, rmap VM, 3092 | D: nl.linux.org administrator, minor scheduler additions 3093 | S: Red Hat Boston 3094 | S: 3 Lan Drive 3095 | S: Westford, MA 01886 3096 | S: USA 3097 | 3098 | N: Pekka Riikonen 3099 | E: priikone@poseidon.pspt.fi 3100 | E: priikone@ssh.com 3101 | D: Random kernel hacking and bug fixes 3102 | D: International kernel patch project 3103 | S: Kasarmikatu 11 A4 3104 | S: 70110 Kuopio 3105 | S: Finland 3106 | 3107 | N: Tobias Ringström 3108 | E: tori@unhappy.mine.nu 3109 | D: Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver 3110 | 3111 | N: Luca Risolia 3112 | E: luca.risolia@studio.unibo.it 3113 | P: 1024D/FCE635A4 88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4 3114 | D: V4L driver for W996[87]CF JPEG USB Dual Mode Camera Chips 3115 | D: V4L2 driver for SN9C10x PC Camera Controllers 3116 | D: V4L2 driver for ET61X151 and ET61X251 PC Camera Controllers 3117 | D: V4L2 driver for ZC0301 Image Processor and Control Chip 3118 | S: Via Liberta' 41/A 3119 | S: Osio Sotto, 24046, Bergamo 3120 | S: Italy 3121 | 3122 | N: William E. Roadcap 3123 | E: roadcapw@cfw.com 3124 | W: http://www.cfw.com/~roadcapw 3125 | D: Author of menu based configuration tool, Menuconfig. 3126 | S: 1407 Broad Street 3127 | S: Waynesboro, Virginia 22980 3128 | S: USA 3129 | 3130 | N: Andrew J. Robinson 3131 | E: arobinso@nyx.net 3132 | W: http://www.nyx.net/~arobinso 3133 | D: Hayes ESP serial port driver 3134 | 3135 | N: Florian La Roche 3136 | E: rzsfl@rz.uni-sb.de 3137 | E: flla@stud.uni-sb.de 3138 | D: Net programs and kernel net hacker 3139 | S: Gaildorfer Str. 27 3140 | S: 7000 Stuttgart 50 3141 | S: Germany 3142 | 3143 | N: Christoph Rohland 3144 | E: hans-christoph.rohland@sap.com 3145 | E: ch.rohland@gmx.net 3146 | D: shm fs, SYSV semaphores, af_unix 3147 | S: Neue Heimat Str. 8 3148 | S: D-68789 St.Leon-Rot 3149 | S: Germany 3150 | 3151 | N: Thiago Berlitz Rondon 3152 | E: maluco@mileniumnet.com.br 3153 | W: http://vivaldi.linuxms.com.br/~maluco 3154 | D: Miscellaneous kernel hacker 3155 | S: R. Anhanguera, 1487 - Ipiranga 3156 | S: 79080-740 - Campo Grande - Mato Grosso do Sul 3157 | S: Brazil 3158 | 3159 | N: Stephen Rothwell 3160 | E: sfr@canb.auug.org.au 3161 | W: http://www.canb.auug.org.au/~sfr 3162 | P: 1024/BD8C7805 CD A4 9D 01 10 6E 7E 3B 91 88 FA D9 C8 40 AA 02 3163 | D: Boot/setup/build work for setup > 2K 3164 | D: Author, APM driver 3165 | D: Directory notification 3166 | S: 66 Maltby Circuit 3167 | S: Wanniassa ACT 2903 3168 | S: Australia 3169 | 3170 | N: Gerard Roudier 3171 | E: groudier@free.fr 3172 | D: Contributed to asynchronous read-ahead improvement 3173 | S: 21 Rue Carnot 3174 | S: 95170 Deuil La Barre 3175 | S: France 3176 | 3177 | N: Sebastien Rougeaux 3178 | E: Sebastien.Rougeaux@syseng.anu.edu.au 3179 | D: IEEE 1394 OHCI module 3180 | S: Research School of Information Science and Engineering 3181 | S: The Australian National University, ACT 0200 3182 | S: Australia 3183 | 3184 | N: Aristeu Sergio Rozanski Filho 3185 | E: aris@cathedrallabs.org 3186 | D: Support for EtherExpress 10 ISA (i82595) in eepro driver 3187 | D: User level driver support for input 3188 | S: R. Jose Serrato, 130 - Santa Candida 3189 | S: 82640-320 - Curitiba - Paraná 3190 | S: Brazil 3191 | 3192 | N: Alessandro Rubini 3193 | E: rubini@ipvvis.unipv.it 3194 | D: the gpm mouse server and kernel support for it 3195 | 3196 | N: Philipp Rumpf 3197 | E: prumpf@tux.org 3198 | D: random bugfixes 3199 | S: Drausnickstrasse 29 3200 | S: 91052 Erlangen 3201 | S: Germany 3202 | 3203 | N: Paul `Rusty' Russell 3204 | E: rusty@rustcorp.com.au 3205 | W: http://ozlabs.org/~rusty 3206 | D: Ruggedly handsome. 3207 | D: netfilter, ipchains with Michael Neuling. 3208 | S: 52 Moore St 3209 | S: Turner ACT 2612 3210 | S: Australia 3211 | 3212 | N: Richard Russon (FlatCap) 3213 | E: kernel@flatcap.org 3214 | W: http://www.flatcap.org 3215 | D: NTFS support 3216 | D: LDM support (Win2000/XP Logical Disk Manager/Dynamic Disks) 3217 | S: 50 Swansea Road 3218 | S: Reading 3219 | S: United Kingdom 3220 | 3221 | N: Bill Ryder 3222 | E: bryder@sgi.com 3223 | D: FTDI_SIO usb/serial converter driver 3224 | W: http://reality.sgi.com/bryder_wellington/ftdi_sio 3225 | S: I/3 Walter St 3226 | S: Wellington 3227 | S: New Zealand 3228 | 3229 | N: Sampo Saaristo 3230 | E: sambo@cs.tut.fi 3231 | D: Co-author of Multi-Protocol Over ATM (MPOA) 3232 | S: Tampere University of Technology / Telecom lab 3233 | S: Hermiankatu 12C 3234 | S: FIN-33720 Tampere 3235 | S: Finland 3236 | 3237 | N: Thomas Sailer 3238 | E: t.sailer@alumni.ethz.ch 3239 | E: HB9JNX@HB9W.CHE.EU (packet radio) 3240 | D: Baycom driver 3241 | S: Markusstrasse 18 3242 | S: 8006 Zuerich 3243 | S: Switzerland 3244 | 3245 | N: Manuel Estrada Sainz 3246 | D: Firmware loader (request_firmware) 3247 | 3248 | N: Wayne Salamon 3249 | E: wsalamon@tislabs.com 3250 | E: wsalamon@nai.com 3251 | D: portions of the Linux Security Module (LSM) framework and security modules 3252 | 3253 | N: Robert Sanders 3254 | E: gt8134b@prism.gatech.edu 3255 | D: Dosemu 3256 | 3257 | N: Duncan Sands 3258 | E: duncan.sands@free.fr 3259 | W: http://topo.math.u-psud.fr/~sands 3260 | D: Alcatel SpeedTouch USB driver 3261 | S: 69 rue Dunois 3262 | S: 75013 Paris 3263 | S: France 3264 | 3265 | N: Aleksa Sarai 3266 | E: cyphar@cyphar.com 3267 | W: https://www.cyphar.com/ 3268 | D: `pids` cgroup subsystem 3269 | 3270 | N: Dipankar Sarma 3271 | E: dipankar@in.ibm.com 3272 | D: RCU 3273 | 3274 | N: Hannu Savolainen 3275 | E: hannu@opensound.com 3276 | D: Maintainer of the sound drivers until 2.1.x days. 3277 | D: Original compressed boot image support. 3278 | S: Valurink. 4A11 3279 | S: 03600 Karkkila 3280 | S: Finland 3281 | 3282 | N: Deepak Saxena 3283 | E: dsaxena@plexity.net 3284 | D: I2O kernel layer (config, block, core, pci, net). I2O disk support for LILO 3285 | D: XScale(IOP, IXP) porting and other random ARM bits 3286 | S: Portland, OR 3287 | 3288 | N: Eric Schenk 3289 | E: Eric.Schenk@dna.lth.se 3290 | D: Random kernel debugging. 3291 | D: SYSV Semaphore code rewrite. 3292 | D: Network layer debugging. 3293 | D: Dial on demand facility (diald). 3294 | S: Dag Hammerskjolds v. 3E 3295 | S: S-226 64 LUND 3296 | S: Sweden 3297 | 3298 | N: Henning P. Schmiedehausen 3299 | E: hps@tanstaafl.de 3300 | D: added PCI support to the serial driver 3301 | S: Buckenhof, Germany 3302 | 3303 | N: Michael Schmitz 3304 | E: 3305 | D: Macintosh IDE Driver 3306 | 3307 | N: Peter De Schrijver 3308 | E: stud11@cc4.kuleuven.ac.be 3309 | D: Mitsumi CD-ROM driver patches March version 3310 | S: Molenbaan 29 3311 | S: B2240 Zandhoven 3312 | S: Belgium 3313 | 3314 | N: Martin Schulze 3315 | E: joey@linux.de 3316 | W: http://home.pages.de/~joey/ 3317 | D: Random Linux Hacker, Linux Promoter 3318 | D: CD-List, Books-List, Ex-FAQ 3319 | D: Linux-Support, -Mailbox, -Stammtisch 3320 | D: several improvements to system programs 3321 | S: Oldenburg 3322 | S: Germany 3323 | 3324 | N: Robert Schwebel 3325 | E: robert@schwebel.de 3326 | W: http://www.schwebel.de 3327 | D: Embedded hacker and book author, 3328 | D: AMD Elan support for Linux 3329 | S: Pengutronix 3330 | S: Braunschweiger Strasse 79 3331 | S: 31134 Hildesheim 3332 | S: Germany 3333 | 3334 | N: Darren Senn 3335 | E: sinster@darkwater.com 3336 | D: Whatever I notice needs doing (so far: itimers, /proc) 3337 | S: Post Office Box 64132 3338 | S: Sunnyvale, California 94088-4132 3339 | S: USA 3340 | 3341 | N: Stas Sergeev 3342 | E: stsp@users.sourceforge.net 3343 | D: PCM PC-Speaker driver 3344 | D: misc fixes 3345 | S: Russia 3346 | 3347 | N: Simon Shapiro 3348 | E: shimon@i-Connect.Net 3349 | W: http://www.-i-Connect.Net/~shimon 3350 | D: SCSI debugging 3351 | D: Maintainer of the Debian Kernel packages 3352 | S: 14355 SW Allen Blvd., Suite #140 3353 | S: Beaverton, Oregon 97008 3354 | S: USA 3355 | 3356 | N: Mike Shaver 3357 | E: shaver@hungry.org 3358 | W: http://www.hungry.org/~shaver/ 3359 | D: MIPS work, /proc/sys/net, misc net hacking 3360 | S: 149 Union St. 3361 | S: Kingston, Ontario 3362 | S: Canada K7L 2P4 3363 | 3364 | N: John Shifflett 3365 | E: john@geolog.com 3366 | E: jshiffle@netcom.com 3367 | D: Always IN2000 SCSI driver 3368 | D: wd33c93 SCSI driver (linux-m68k) 3369 | S: San Jose, California 3370 | S: USA 3371 | 3372 | N: Robert Siemer 3373 | E: Robert.Siemer@gmx.de 3374 | P: 2048/C99A4289 2F DC 17 2E 56 62 01 C8 3D F2 AC 09 F2 E5 DD EE 3375 | D: miroSOUND PCM20 radio RDS driver, ACI rewrite 3376 | S: Klosterweg 28 / i309 3377 | S: 76131 Karlsruhe 3378 | S: Germany 3379 | 3380 | N: James Simmons 3381 | E: jsimmons@infradead.org 3382 | E: jsimmons@users.sf.net 3383 | D: Frame buffer device maintainer 3384 | D: input layer development 3385 | D: tty/console layer 3386 | D: various mipsel devices 3387 | S: 115 Carmel Avenue 3388 | S: El Cerrito CA 94530 3389 | S: USA 3390 | 3391 | N: Jaspreet Singh 3392 | E: jaspreet@sangoma.com 3393 | W: www.sangoma.com 3394 | D: WANPIPE drivers & API Support for Sangoma S508/FT1 cards 3395 | S: Sangoma Technologies Inc., 3396 | S: 1001 Denison Street 3397 | S: Suite 101 3398 | S: Markham, Ontario L3R 2Z6 3399 | S: Canada 3400 | 3401 | N: Rick Sladkey 3402 | E: jrs@world.std.com 3403 | D: utility hacker: Emacs, NFS server, mount, kmem-ps, UPS debugger, strace, GDB 3404 | D: library hacker: RPC, profil(3), realpath(3), regexp.h 3405 | D: kernel hacker: unnamed block devs, NFS client, fast select, precision timer 3406 | S: 24 Avon Place 3407 | S: Arlington, Massachusetts 02174 3408 | S: USA 3409 | 3410 | N: Craig Small 3411 | E: csmall@triode.apana.org.au 3412 | E: vk2xlz@gonzo.vk2xlz.ampr.org (packet radio) 3413 | D: Gracilis PackeTwin device driver 3414 | D: RSPF daemon 3415 | S: 10 Stockalls Place 3416 | S: Minto, NSW, 2566 3417 | S: Australia 3418 | 3419 | N: Stephen Smalley 3420 | E: sds@tycho.nsa.gov 3421 | D: portions of the Linux Security Module (LSM) framework and security modules 3422 | 3423 | N: Chris Smith 3424 | E: csmith@convex.com 3425 | D: Read only HPFS filesystem 3426 | S: Richardson, Texas 3427 | S: USA 3428 | 3429 | N: Christopher Smith 3430 | E: x@xman.org 3431 | D: Tulip net driver hacker 3432 | 3433 | N: Mark Smith 3434 | E: mark.smith@comdev.cc 3435 | D: Multicast support in bonding driver 3436 | 3437 | N: Miquel van Smoorenburg 3438 | E: miquels@cistron.nl 3439 | D: Kernel and net hacker. Sysvinit, minicom. doing Debian stuff. 3440 | S: Cistron Internet Services 3441 | S: PO-Box 297 3442 | S: 2400 AG, Alphen aan den Rijn 3443 | S: The Netherlands 3444 | 3445 | N: Scott Snyder 3446 | E: snyder@fnald0.fnal.gov 3447 | D: ATAPI cdrom driver 3448 | S: MS 352, Fermilab 3449 | S: Post Office Box 500 3450 | S: Batavia, Illinois 60510 3451 | S: USA 3452 | 3453 | N: Leo Spiekman 3454 | E: leo@netlabs.net 3455 | W: http://www.netlabs.net/hp/leo/ 3456 | D: Optics Storage 8000AT cdrom driver 3457 | S: Cliffwood, New Jersey 07721 3458 | S: USA 3459 | 3460 | N: Manfred Spraul 3461 | E: manfred@colorfullife.com 3462 | W: http://www.colorfullife.com/~manfred 3463 | D: Lots of tiny hacks. Larger improvements to SysV IPC msg, 3464 | D: slab, pipe, select. 3465 | S: 71701 Schwieberdingen 3466 | S: Germany 3467 | 3468 | N: Andrew Stanley-Jones 3469 | E: asj@lanmedia.com 3470 | D: LanMedia Corp. Device WAN card device driver 3471 | S: #102, 686 W. Maude Ave 3472 | S: Sunyvale, CA 94086 3473 | S: USA 3474 | 3475 | N: Michael Still 3476 | E: mikal@stillhq.com 3477 | W: http://www.stillhq.com 3478 | D: Various janitorial patches 3479 | D: mandocs and mandocs_install build targets 3480 | S: (Email me and ask) 3481 | S: Australia 3482 | 3483 | N: Henrik Storner 3484 | E: storner@image.dk 3485 | W: http://www.image.dk/~storner/ 3486 | W: http://www.sslug.dk/ 3487 | D: Configure script: Invented tristate for module-configuration 3488 | D: vfat/msdos integration, kerneld docs, Linux promotion 3489 | D: Miscellaneous bug-fixes 3490 | S: Chr. Winthersvej 1 B, st.th. 3491 | S: DK-1860 Frederiksberg C 3492 | S: Denmark 3493 | 3494 | N: Drew Sullivan 3495 | E: drew@ss.org 3496 | W: http://www.ss.org/ 3497 | P: 1024/ACFFA969 5A 9C 42 AB E4 24 82 31 99 56 00 BF D3 2B 25 46 3498 | D: iBCS2 developer 3499 | S: 22 Irvington Cres. 3500 | S: Willowdale, Ontario 3501 | S: Canada M2N 2Z1 3502 | 3503 | N: Adam Sulmicki 3504 | E: adam@cfar.umd.edu 3505 | W: http://www.eax.com 3506 | D: core networking fixes 3507 | D: patch-kernel enhancements 3508 | D: misc kernel fixes and updates 3509 | 3510 | N: Adrian Sun 3511 | E: asun@cobaltnet.com 3512 | D: hfs support 3513 | D: alpha rtc port, random appletalk fixes 3514 | S: Department of Zoology, University of Washington 3515 | S: Seattle, WA 98195-1800 3516 | S: USA 3517 | 3518 | N: Eugene Surovegin 3519 | E: ebs@ebshome.net 3520 | W: http://kernel.ebshome.net/ 3521 | P: 1024D/AE5467F1 FF22 39F1 6728 89F6 6E6C 2365 7602 F33D AE54 67F1 3522 | D: Embedded PowerPC 4xx: EMAC, I2C, PIC and random hacks/fixes 3523 | S: Sunnyvale, California 94085 3524 | S: USA 3525 | 3526 | N: Corey Thomas 3527 | E: corey@world.std.com 3528 | W: http://world.std.com/~corey/index.html 3529 | D: Raylink/WebGear wireless LAN device driver (ray_cs) author 3530 | S: 145 Howard St. 3531 | S: Northborough, MA 01532 3532 | S: USA 3533 | 3534 | N: Doug Thompson 3535 | E: dougthompson@xmission.com 3536 | D: EDAC 3537 | 3538 | N: Tommy Thorn 3539 | E: Tommy.Thorn@irisa.fr 3540 | W: http://www.irisa.fr/prive/thorn/index.html 3541 | P: 512/B4AFC909 BC BF 6D B1 52 26 1E D6 E3 2F A3 24 2A 84 FE 21 3542 | D: Device driver hacker (aha1542 & plip) 3543 | S: IRISA 3544 | S: Universit=E9 de Rennes I 3545 | S: F-35042 Rennes Cedex 3546 | S: France 3547 | 3548 | N: Urs Thuermann 3549 | E: urs.thuermann@volkswagen.de 3550 | W: http://www.volkswagen.de 3551 | D: Controller Area Network (network layer core) 3552 | S: Brieffach 1776 3553 | S: 38436 Wolfsburg 3554 | S: Germany 3555 | 3556 | N: Jon Tombs 3557 | E: jon@gte.esi.us.es 3558 | W: http://www.esi.us.es/~jon 3559 | D: NFS mmap() 3560 | D: XF86_S3 3561 | D: Kernel modules 3562 | D: Parts of various other programs (xfig, open, ...) 3563 | S: C/ Federico Garcia Lorca 1 10-A 3564 | S: Sevilla 41005 3565 | S: Spain 3566 | 3567 | N: Linus Torvalds 3568 | E: torvalds@linux-foundation.org 3569 | D: Original kernel hacker 3570 | S: Portland, Oregon 97005 3571 | S: USA 3572 | 3573 | N: Marcelo Tosatti 3574 | E: marcelo@kvack.org 3575 | D: v2.4 kernel maintainer 3576 | S: Brazil 3577 | 3578 | N: Stefan Traby 3579 | E: stefan@quant-x.com 3580 | D: Minor Alpha kernel hacks 3581 | S: Mitterlasznitzstr. 13 3582 | S: 8302 Nestelbach 3583 | S: Austria 3584 | 3585 | N: Jeff Tranter 3586 | E: tranter@pobox.com 3587 | D: Enhancements to Joystick driver 3588 | D: Author of Sound HOWTO and CD-ROM HOWTO 3589 | D: Author of several small utilities 3590 | D: (bogomips, scope, eject, statserial) 3591 | S: 1 Laurie Court 3592 | S: Kanata, Ontario 3593 | S: Canada K2L 1S2 3594 | 3595 | N: Andrew Tridgell 3596 | E: tridge@samba.org 3597 | W: http://samba.org/tridge/ 3598 | D: dosemu, networking, samba 3599 | S: 3 Ballow Crescent 3600 | S: MacGregor A.C.T 2615 3601 | S: Australia 3602 | 3603 | N: Josh Triplett 3604 | E: josh@joshtriplett.org 3605 | P: 4096R/8AFF873D 758E 5042 E397 4BA3 3A9C 1E67 0ED9 A3DF 8AFF 873D 3606 | D: RCU and rcutorture 3607 | D: lock annotations, finding and fixing lock bugs 3608 | D: kernel tinification 3609 | 3610 | N: Winfried Trümper 3611 | E: winni@xpilot.org 3612 | W: http://www.shop.de/~winni/ 3613 | D: German HOWTO, Crash-Kurs Linux (German, 100 comprehensive pages) 3614 | D: CD-Writing HOWTO, various mini-HOWTOs 3615 | D: One-week tutorials on Linux twice a year (free of charge) 3616 | D: Linux-Workshop Köln (aka LUG Cologne, Germany), Installfests 3617 | S: Tacitusstr. 6 3618 | S: D-50968 Köln 3619 | 3620 | N: Tsu-Sheng Tsao 3621 | E: tsusheng@scf.usc.edu 3622 | D: IGMP(Internet Group Management Protocol) version 2 3623 | S: 2F 14 ALY 31 LN 166 SEC 1 SHIH-PEI RD 3624 | S: Taipei 3625 | S: Taiwan 112 3626 | S: Republic of China 3627 | S: 24335 Delta Drive 3628 | S: Diamond Bar, California 91765 3629 | S: USA 3630 | 3631 | N: Theodore Ts'o 3632 | E: tytso@mit.edu 3633 | D: Random Linux hacker 3634 | D: Maintainer of tsx-11.mit.edu ftp archive 3635 | D: Maintainer of c.o.l.* Usenet<->mail gateway 3636 | D: Author of serial driver 3637 | D: Author of the new e2fsck 3638 | D: Author of job control and system call restart code 3639 | D: Author of ramdisk device driver 3640 | D: Author of loopback device driver 3641 | D: Author of /dev/random driver 3642 | S: MIT Room E40-343 3643 | S: 1 Amherst Street 3644 | S: Cambridge, Massachusetts 02139 3645 | S: USA 3646 | 3647 | N: Simmule Turner 3648 | E: sturner@tele-tv.com 3649 | D: Added swapping to filesystem 3650 | S: 4226 Landgreen Street 3651 | S: Rockville, Maryland 20853 3652 | S: USA 3653 | 3654 | N: Stephen Tweedie 3655 | E: sct@redhat.com 3656 | P: 1024/E7A417AD E2 FE A4 20 34 EC ED FC 7D 7E 67 8D E0 31 D1 69 3657 | P: 1024D/43BE7544 D2A4 8556 08E6 90E7 076C BA3F 243F 20A4 43BE 7544 3658 | D: Second extended file system developer 3659 | D: General filesystem hacker 3660 | D: kswap vm management code 3661 | S: 44 Campbell Park Crescent 3662 | S: Edinburgh EH13 0HT 3663 | S: United Kingdom 3664 | 3665 | N: Thomas Uhl 3666 | E: uhl@sun1.rz.fh-heilbronn.de 3667 | D: Application programmer 3668 | D: Linux promoter 3669 | D: Author of a German book on Linux 3670 | S: Obere Heerbergstrasse 17 3671 | S: 97078 Wuerzburg 3672 | S: Germany 3673 | 3674 | N: Jason Uhlenkott 3675 | E: juhlenko@akamai.com 3676 | D: I3000 EDAC driver 3677 | 3678 | N: Greg Ungerer 3679 | E: gerg@snapgear.com 3680 | D: uClinux kernel hacker 3681 | D: Port uClinux to the Motorola ColdFire CPU 3682 | D: Author of Stallion multiport serial drivers 3683 | S: SnapGear Inc. 3684 | S: 825 Stanley St 3685 | S: Woolloongabba. QLD. 4102 3686 | S: Australia 3687 | 3688 | N: Jeffrey A. Uphoff 3689 | E: juphoff@transmeta.com 3690 | E: jeff.uphoff@linux.org 3691 | P: 1024/9ED505C5 D7 BB CA AA 10 45 40 1B 16 19 0A C0 38 A0 3E CB 3692 | D: Linux Security/Alert mailing lists' moderator/maintainer. 3693 | D: NSM (rpc.statd) developer. 3694 | D: PAM S/Key module developer. 3695 | D: 'dip' contributor. 3696 | D: AIPS port, astronomical community support. 3697 | S: Transmeta Corporation 3698 | S: 2540 Mission College Blvd. 3699 | S: Santa Clara, CA 95054 3700 | S: USA 3701 | 3702 | N: Matthias Urlichs 3703 | E: smurf@smurf.noris.de 3704 | E: smurf@debian.org 3705 | E: matthias@urlichs.de 3706 | D: Consultant, developer, kernel hacker 3707 | D: In a previous life, worked on Streams/ISDN/BSD networking code for Linux 3708 | S: Schleiermacherstrasse 12 3709 | S: 90491 Nuernberg 3710 | S: Germany 3711 | 3712 | N: Geert Uytterhoeven 3713 | E: geert@linux-m68k.org 3714 | W: http://users.telenet.be/geertu/ 3715 | P: 4096R/4804B4BC3F55EEFB 750D 82B0 A781 5431 5E25 925B 4804 B4BC 3F55 EEFB 3716 | D: m68k/Amiga and PPC/CHRP Longtrail coordinator 3717 | D: Frame buffer device and XF68_FBDev maintainer 3718 | D: m68k IDE maintainer 3719 | D: Amiga Zorro maintainer 3720 | D: Amiga Buddha and Catweasel chipset IDE 3721 | D: Atari Falcon chipset IDE 3722 | D: Amiga Gayle chipset IDE 3723 | D: mipsel NEC DDB Vrc-5074 3724 | S: Haterbeekstraat 55B 3725 | S: B-3200 Aarschot 3726 | S: Belgium 3727 | 3728 | N: Chris Vance 3729 | E: cvance@tislabs.com 3730 | E: cvance@nai.com 3731 | D: portions of the Linux Security Module (LSM) framework and security modules 3732 | 3733 | N: Petr Vandrovec 3734 | E: petr@vandrovec.name 3735 | D: Small contributions to ncpfs 3736 | D: Matrox framebuffer driver 3737 | S: 21513 Conradia Ct 3738 | S: Cupertino, CA 95014 3739 | S: USA 3740 | 3741 | N: Thibaut Varene 3742 | E: T-Bone@parisc-linux.org 3743 | W: http://www.parisc-linux.org/~varenet/ 3744 | P: 1024D/B7D2F063 E67C 0D43 A75E 12A5 BB1C FA2F 1E32 C3DA B7D2 F063 3745 | D: PA-RISC port minion, PDC and GSCPS2 drivers, debuglocks and other bits 3746 | D: Some ARM at91rm9200 bits, S1D13XXX FB driver, random patches here and there 3747 | D: AD1889 sound driver 3748 | S: Paris, France 3749 | 3750 | N: Heikki Vatiainen 3751 | E: hessu@cs.tut.fi 3752 | D: Co-author of Multi-Protocol Over ATM (MPOA), some LANE hacks 3753 | S: Tampere University of Technology / Telecom lab 3754 | S: Hermiankatu 12C 3755 | S: FIN-33720 Tampere 3756 | S: Finland 3757 | 3758 | N: Andrew Veliath 3759 | E: andrewtv@usa.net 3760 | D: Turtle Beach MultiSound sound driver 3761 | S: USA 3762 | 3763 | N: Dirk Verworner 3764 | D: Co-author of German book ``Linux-Kernel-Programmierung'' 3765 | D: Co-founder of Berlin Linux User Group 3766 | 3767 | N: Andrew Victor 3768 | E: linux@maxim.org.za 3769 | W: http://maxim.org.za/at91_26.html 3770 | D: First maintainer of Atmel ARM-based SoC, aka AT91 3771 | D: Introduced support for at91rm9200, the first chip of AT91 family 3772 | S: South Africa 3773 | 3774 | N: Riku Voipio 3775 | E: riku.voipio@iki.fi 3776 | D: Author of PCA9532 LED and Fintek f75375s hwmon driver 3777 | D: Some random ARM board patches 3778 | S: Finland 3779 | 3780 | N: Patrick Volkerding 3781 | E: volkerdi@ftp.cdrom.com 3782 | D: Produced the Slackware distribution, updated the SVGAlib 3783 | D: patches for ghostscript, worked on color 'ls', etc. 3784 | S: 301 15th Street S. 3785 | S: Moorhead, Minnesota 56560 3786 | S: USA 3787 | 3788 | N: Jos Vos 3789 | E: jos@xos.nl 3790 | W: http://www.xos.nl/ 3791 | D: Various IP firewall updates, ipfwadm 3792 | S: X/OS Experts in Open Systems BV 3793 | S: Kruislaan 419 3794 | S: 1098 VA Amsterdam 3795 | S: The Netherlands 3796 | 3797 | N: Jeroen Vreeken 3798 | E: pe1rxq@amsat.org 3799 | W: http://www.chello.nl/~j.vreeken/ 3800 | D: SE401 usb webcam driver 3801 | D: ZD1201 usb wireless lan driver 3802 | S: Maastrichterweg 63 3803 | S: 5554 GG Valkenswaard 3804 | S: The Netherlands 3805 | 3806 | N: Mark Wallis 3807 | E: mwallis@serialmonkey.com 3808 | W: http://mark.serialmonkey.com 3809 | D: Ralink rt2x00 WLAN driver 3810 | S: Newcastle, Australia 3811 | 3812 | N: Peter Shaobo Wang 3813 | E: pwang@mmdcorp.com 3814 | W: http://www.mmdcorp.com/pw/linux 3815 | D: Driver for Interphase ATM (i)Chip SAR adapter card family (x575, x525, x531). 3816 | S: 1513 Brewster Dr. 3817 | S: Carrollton, TX 75010 3818 | S: USA 3819 | 3820 | N: Tim Waugh 3821 | E: tim@cyberelk.net 3822 | D: Co-architect of the parallel-port sharing system 3823 | S: 17 Curling Vale 3824 | S: GUILDFORD 3825 | S: Surrey 3826 | S: GU2 7PJ 3827 | S: United Kingdom 3828 | 3829 | N: Juergen Weigert 3830 | E: jnweiger@immd4.informatik.uni-erlangen.de 3831 | D: The Linux Support Team Erlangen 3832 | 3833 | N: David Weinehall 3834 | E: tao@acc.umu.se 3835 | P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16 3836 | W: http://www.acc.umu.se/~tao/ 3837 | D: v2.0 kernel maintainer 3838 | D: Fixes for the NE/2-driver 3839 | D: Miscellaneous MCA-support 3840 | D: Cleanup of the Config-files 3841 | 3842 | N: Matt Welsh 3843 | E: mdw@metalab.unc.edu 3844 | W: http://www.cs.berkeley.edu/~mdw 3845 | D: Original Linux Documentation Project coordinator 3846 | D: Author, "Running Linux" (O'Reilly) 3847 | D: Author, "Linux Installation and Getting Started" (LDP) and several HOWTOs 3848 | D: Linuxdoc-SGML formatting system (now SGML-Tools) 3849 | D: Device drivers for various high-speed network interfaces (Myrinet, ATM) 3850 | D: Keithley DAS1200 device driver 3851 | D: Original maintainer of sunsite WWW and FTP sites 3852 | D: Original moderator of c.o.l.announce and c.o.l.answers 3853 | S: Computer Science Division 3854 | S: UC Berkeley 3855 | S: Berkeley, CA 94720-1776 3856 | S: USA 3857 | 3858 | N: Harald Welte 3859 | E: laforge@netfilter.org 3860 | P: 1024D/30F48BFF DBDE 6912 8831 9A53 879B 9190 5DA5 C655 30F4 8BFF 3861 | W: http://gnumonks.org/users/laforge 3862 | D: netfilter: new nat helper infrastructure 3863 | D: netfilter: ULOG, ECN, DSCP target 3864 | D: netfilter: TTL match 3865 | D: netfilter: IPv6 mangle table 3866 | D: netfilter: various other hacks 3867 | S: Berlin 3868 | S: Germany 3869 | 3870 | N: Bill Wendling 3871 | E: wendling@ganymede.isdn.uiuc.edu 3872 | W: http://www.ncsa.uiuc.edu/~wendling/ 3873 | D: Various random hacks. Mostly on poll/select logic. 3874 | S: 605 E. Springfield Ave. 3875 | S: Champaign, IL 61820 3876 | S: USA 3877 | 3878 | N: Mike Westall 3879 | D: IBM Turboways 25 ATM Device Driver 3880 | E: westall@cs.clemson.edu 3881 | S: Department of Computer Science 3882 | S: Clemson University 3883 | S: Clemson SC 29634 USA 3884 | 3885 | N: Greg Wettstein 3886 | E: greg@wind.rmcc.com 3887 | D: Filesystem valid flag for MINIX filesystem. 3888 | D: Minor kernel debugging. 3889 | D: Development and maintenance of sysklogd. 3890 | D: Monitoring of development kernels for long-term stability. 3891 | D: Early implementations of Linux in a commercial environment. 3892 | S: Dr. Greg Wettstein, Ph.D. 3893 | S: Oncology Research Division Computing Facility 3894 | S: Roger Maris Cancer Center 3895 | S: 820 4th St. N. 3896 | S: Fargo, North Dakota 58122 3897 | S: USA 3898 | 3899 | N: Steven Whitehouse 3900 | E: steve@chygwyn.com 3901 | W: http://www.chygwyn.com/~steve 3902 | D: Linux DECnet project 3903 | D: Minor debugging of other networking protocols. 3904 | D: Misc bug fixes and GFS2 filesystem development 3905 | 3906 | N: Hans-Joachim Widmaier 3907 | E: hjw@zvw.de 3908 | D: AFFS rewrite 3909 | S: Eichenweg 16 3910 | S: 73650 Winterbach 3911 | S: Germany 3912 | 3913 | N: Urban Widmark 3914 | E: urban@svenskatest.se 3915 | D: via-rhine, misc net driver hacking 3916 | 3917 | N: Marco van Wieringen 3918 | E: mvw@planets.elm.net 3919 | D: Author of process accounting and diskquota 3920 | S: Breeburgsingel 12 3921 | S: 2135 CN Hoofddorp 3922 | S: The Netherlands 3923 | 3924 | N: Matthew Wilcox 3925 | E: matthew@wil.cx 3926 | W: ftp://ftp.uk.linux.org/pub/linux/people/willy/ 3927 | D: Linux/PARISC hacker. Filesystem hacker. Random other hacking. Custom 3928 | D: PPC port hacking. 3929 | 3930 | N: G\"unter Windau 3931 | E: gunter@mbfys.kun.nl 3932 | D: Some bug fixes in the polling printer driver (lp.c) 3933 | S: University of Nijmegen 3934 | S: Geert-Grooteplein Noord 21 3935 | S: 6525 EZ Nijmegen 3936 | S: The Netherlands 3937 | 3938 | N: Ulrich Windl 3939 | E: Ulrich.Windl@rz.uni-regensburg.de 3940 | P: 1024/E843660D CF D7 43 A1 5A 49 14 25 7C 04 A0 6E 4C 3A AC 6D 3941 | D: Supports NTP on Linux. Added PPS code. Fixed bugs in adjtimex(). 3942 | S: Alte Regensburger Str. 11a 3943 | S: 93149 Nittenau 3944 | S: Germany 3945 | 3946 | N: Gertjan van Wingerde 3947 | E: gwingerde@gmail.com 3948 | D: Ralink rt2x00 WLAN driver 3949 | D: Minix V2 file-system 3950 | D: Misc fixes 3951 | S: The Netherlands 3952 | 3953 | N: Lars Wirzenius 3954 | E: liw@iki.fi 3955 | D: Linux System Administrator's Guide, author, former maintainer 3956 | D: comp.os.linux.announce, former moderator 3957 | D: Linux Documentation Project, co-founder 3958 | D: Original sprintf in kernel 3959 | D: Original kernel README (for version 0.97) 3960 | D: Linux News (electronic magazine, now dead), founder and former editor 3961 | D: Meta-FAQ, originator, former maintainer 3962 | D: INFO-SHEET, former maintainer 3963 | D: Author of the longest-living linux bug 3964 | 3965 | N: Jonathan Woithe 3966 | E: jwoithe@just42.net 3967 | W: http:/www.just42.net/jwoithe 3968 | D: ALS-007 sound card extensions to Sound Blaster driver 3969 | S: 20 Jordan St 3970 | S: Valley View, SA 5093 3971 | S: Australia 3972 | 3973 | N: Clifford Wolf 3974 | E: god@clifford.at 3975 | W: http://www.clifford.at/ 3976 | D: Menuconfig/lxdialog improvement 3977 | S: Foehrengasse 16 3978 | S: A-2333 Leopoldsdorf b. Wien 3979 | S: Austria 3980 | 3981 | N: Roger E. Wolff 3982 | E: R.E.Wolff@BitWizard.nl 3983 | D: Written kmalloc/kfree 3984 | D: Written Specialix IO8+ driver 3985 | D: Written Specialix SX driver 3986 | S: van Bronckhorststraat 12 3987 | S: 2612 XV Delft 3988 | S: The Netherlands 3989 | 3990 | N: Thomas Woller 3991 | D: CS461x Cirrus Logic sound driver 3992 | 3993 | N: David Woodhouse 3994 | E: dwmw2@infradead.org 3995 | D: JFFS2 file system, Memory Technology Device subsystem, 3996 | D: various other stuff that annoyed me by not working. 3997 | S: c/o Intel Corporation 3998 | S: Pipers Way 3999 | S: Swindon. SN3 1RJ 4000 | S: England 4001 | 4002 | N: Chris Wright 4003 | E: chrisw@sous-sol.org 4004 | D: hacking on LSM framework and security modules. 4005 | S: Portland, OR 4006 | S: USA 4007 | 4008 | N: Michal Wronski 4009 | E: michal.wronski@gmail.com 4010 | D: POSIX message queues fs (with K. Benedyczak) 4011 | S: Krakow 4012 | S: Poland 4013 | 4014 | N: Frank Xia 4015 | E: qx@math.columbia.edu 4016 | D: Xiafs filesystem [defunct] 4017 | S: 542 West 112th Street, 5N 4018 | S: New York, New York 10025 4019 | S: USA 4020 | 4021 | N: Li Yang 4022 | E: leoli@freescale.com 4023 | D: Freescale Highspeed USB device driver 4024 | D: Freescale QE SoC support and Ethernet driver 4025 | S: B-1206 Jingmao Guojigongyu 4026 | S: 16 Baliqiao Nanjie, Beijing 101100 4027 | S: People's Repulic of China 4028 | 4029 | N: Victor Yodaiken 4030 | E: yodaiken@fsmlabs.com 4031 | D: RTLinux (RealTime Linux) 4032 | S: POB 1822 4033 | S: Socorro NM, 87801 4034 | S: USA 4035 | 4036 | N: Hiroshi YOKOTA 4037 | E: yokota@netlab.is.tsukuba.ac.jp 4038 | D: Workbit NinjaSCSI-3/32Bi PCMCIA driver 4039 | D: Workbit NinjaSCSI-32Bi/UDE driver 4040 | S: Japan 4041 | 4042 | N: Hideaki YOSHIFUJI 4043 | E: hideaki@yoshifuji.org 4044 | E: yoshfuji@linux-ipv6.org 4045 | W: http://www.yoshifuji.org/~hideaki/ 4046 | P: 1024D/E0620EEA 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA 4047 | D: IPv6 and other networking related stuff 4048 | D: USAGI/WIDE Project, Keio University 4049 | S: Jeunet Palace Kawasaki #1-201, 10-2, Furukawa-cho, Saiwai-ku 4050 | S: Kawasaki, Kanagawa 212-0025 4051 | S: Japan 4052 | 4053 | N: Eric Youngdale 4054 | E: eric@andante.org 4055 | W: http://www.andante.org 4056 | D: General kernel hacker 4057 | D: SCSI iso9660 and ELF 4058 | S: 6389 Hawk View Lane 4059 | S: Alexandria, Virginia 22312 4060 | S: USA 4061 | 4062 | N: Niibe Yutaka 4063 | E: gniibe@mri.co.jp 4064 | D: PLIP driver 4065 | D: Asynchronous socket I/O in the NET code 4066 | S: Mitsubishi Research Institute, Inc. 4067 | S: ARCO Tower 1-8-1 Shimomeguro Meguro-ku 4068 | S: Tokyo 153 4069 | S: Japan 4070 | 4071 | N: James R. Van Zandt 4072 | E: jrv@vanzandt.mv.com 4073 | P: 1024/E298966D F0 37 4F FD E5 7E C5 E6 F1 A0 1E 22 6F 46 DA 0C 4074 | D: Author and maintainer of the Double Talk speech synthesizer driver 4075 | S: 27 Spencer Drive 4076 | S: Nashua, New Hampshire 03062 4077 | S: USA 4078 | 4079 | N: Orest Zborowski 4080 | E: orestz@eskimo.com 4081 | D: XFree86 and kernel development 4082 | S: 1507 145th Place SE #B5 4083 | S: Bellevue, Washington 98007 4084 | S: USA 4085 | 4086 | N: Richard Zidlicky 4087 | E: rz@linux-m68k.org, rdzidlic@geocities.com 4088 | W: http://www.geocities.com/rdzidlic 4089 | D: Q40 port - see arch/m68k/q40/README 4090 | D: various m68k hacks 4091 | S: Germany 4092 | 4093 | N: Werner Zimmermann 4094 | E: Werner.Zimmermann@fht-esslingen.de 4095 | D: CDROM driver "aztcd" (Aztech/Okano/Orchid/Wearnes) 4096 | S: Flandernstrasse 101 4097 | S: D-73732 Esslingen 4098 | S: Germany 4099 | 4100 | N: Roman Zippel 4101 | E: zippel@linux-m68k.org 4102 | D: AFFS and HFS filesystems, m68k maintainer, new kernel configuration in 2.5 4103 | 4104 | N: Leonard N. Zubkoff 4105 | W: http://www.dandelion.com/Linux/ 4106 | D: BusLogic SCSI driver 4107 | D: Mylex DAC960 PCI RAID driver 4108 | D: Miscellaneous kernel fixes 4109 | 4110 | N: Alessandro Zummo 4111 | E: a.zummo@towertech.it 4112 | D: CMI8330 support is sb_card.c 4113 | D: ISAPnP fixes in sb_card.c 4114 | D: ZyXEL omni.net lcd plus driver 4115 | D: RTC subsystem 4116 | S: Italy 4117 | 4118 | N: Marc Zyngier 4119 | E: maz@wild-wind.fr.eu.org 4120 | W: http://www.misterjones.org 4121 | D: MD driver 4122 | D: EISA/sysfs subsystem 4123 | S: France 4124 | 4125 | 4126 | # Don't add your name here, unless you really _are_ after Marc 4127 | # alphabetically. Leonard used to be very proud of being the 4128 | # last entry, and he'll get positively pissed if he can't even 4129 | # be second-to-last. (and this file really _is_ supposed to be 4130 | # in alphabetic order) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | NOTE! This copyright does *not* cover user programs that use kernel 3 | services by normal system calls - this is merely considered normal use 4 | of the kernel, and does *not* fall under the heading of "derived work". 5 | Also note that the GPL below is copyrighted by the Free Software 6 | Foundation, but the instance of code that it refers to (the Linux 7 | kernel) is copyrighted by me and others who actually wrote it. 8 | 9 | Also note that the only valid version of the GPL as far as the kernel 10 | is concerned is _this_ particular version of the license (ie v2, not 11 | v2.2 or v3.x or whatever), unless explicitly otherwise stated. 12 | 13 | Linus Torvalds 14 | 15 | ---------------------------------------- 16 | 17 | GNU GENERAL PUBLIC LICENSE 18 | Version 2, June 1991 19 | 20 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 21 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 22 | Everyone is permitted to copy and distribute verbatim copies 23 | of this license document, but changing it is not allowed. 24 | 25 | Preamble 26 | 27 | The licenses for most software are designed to take away your 28 | freedom to share and change it. By contrast, the GNU General Public 29 | License is intended to guarantee your freedom to share and change free 30 | software--to make sure the software is free for all its users. This 31 | General Public License applies to most of the Free Software 32 | Foundation's software and to any other program whose authors commit to 33 | using it. (Some other Free Software Foundation software is covered by 34 | the GNU Library General Public License instead.) You can apply it to 35 | your programs, too. 36 | 37 | When we speak of free software, we are referring to freedom, not 38 | price. Our General Public Licenses are designed to make sure that you 39 | have the freedom to distribute copies of free software (and charge for 40 | this service if you wish), that you receive source code or can get it 41 | if you want it, that you can change the software or use pieces of it 42 | in new free programs; and that you know you can do these things. 43 | 44 | To protect your rights, we need to make restrictions that forbid 45 | anyone to deny you these rights or to ask you to surrender the rights. 46 | These restrictions translate to certain responsibilities for you if you 47 | distribute copies of the software, or if you modify it. 48 | 49 | For example, if you distribute copies of such a program, whether 50 | gratis or for a fee, you must give the recipients all the rights that 51 | you have. You must make sure that they, too, receive or can get the 52 | source code. And you must show them these terms so they know their 53 | rights. 54 | 55 | We protect your rights with two steps: (1) copyright the software, and 56 | (2) offer you this license which gives you legal permission to copy, 57 | distribute and/or modify the software. 58 | 59 | Also, for each author's protection and ours, we want to make certain 60 | that everyone understands that there is no warranty for this free 61 | software. If the software is modified by someone else and passed on, we 62 | want its recipients to know that what they have is not the original, so 63 | that any problems introduced by others will not reflect on the original 64 | authors' reputations. 65 | 66 | Finally, any free program is threatened constantly by software 67 | patents. We wish to avoid the danger that redistributors of a free 68 | program will individually obtain patent licenses, in effect making the 69 | program proprietary. To prevent this, we have made it clear that any 70 | patent must be licensed for everyone's free use or not licensed at all. 71 | 72 | The precise terms and conditions for copying, distribution and 73 | modification follow. 74 | 75 | GNU GENERAL PUBLIC LICENSE 76 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 77 | 78 | 0. This License applies to any program or other work which contains 79 | a notice placed by the copyright holder saying it may be distributed 80 | under the terms of this General Public License. The "Program", below, 81 | refers to any such program or work, and a "work based on the Program" 82 | means either the Program or any derivative work under copyright law: 83 | that is to say, a work containing the Program or a portion of it, 84 | either verbatim or with modifications and/or translated into another 85 | language. (Hereinafter, translation is included without limitation in 86 | the term "modification".) Each licensee is addressed as "you". 87 | 88 | Activities other than copying, distribution and modification are not 89 | covered by this License; they are outside its scope. The act of 90 | running the Program is not restricted, and the output from the Program 91 | is covered only if its contents constitute a work based on the 92 | Program (independent of having been made by running the Program). 93 | Whether that is true depends on what the Program does. 94 | 95 | 1. You may copy and distribute verbatim copies of the Program's 96 | source code as you receive it, in any medium, provided that you 97 | conspicuously and appropriately publish on each copy an appropriate 98 | copyright notice and disclaimer of warranty; keep intact all the 99 | notices that refer to this License and to the absence of any warranty; 100 | and give any other recipients of the Program a copy of this License 101 | along with the Program. 102 | 103 | You may charge a fee for the physical act of transferring a copy, and 104 | you may at your option offer warranty protection in exchange for a fee. 105 | 106 | 2. You may modify your copy or copies of the Program or any portion 107 | of it, thus forming a work based on the Program, and copy and 108 | distribute such modifications or work under the terms of Section 1 109 | above, provided that you also meet all of these conditions: 110 | 111 | a) You must cause the modified files to carry prominent notices 112 | stating that you changed the files and the date of any change. 113 | 114 | b) You must cause any work that you distribute or publish, that in 115 | whole or in part contains or is derived from the Program or any 116 | part thereof, to be licensed as a whole at no charge to all third 117 | parties under the terms of this License. 118 | 119 | c) If the modified program normally reads commands interactively 120 | when run, you must cause it, when started running for such 121 | interactive use in the most ordinary way, to print or display an 122 | announcement including an appropriate copyright notice and a 123 | notice that there is no warranty (or else, saying that you provide 124 | a warranty) and that users may redistribute the program under 125 | these conditions, and telling the user how to view a copy of this 126 | License. (Exception: if the Program itself is interactive but 127 | does not normally print such an announcement, your work based on 128 | the Program is not required to print an announcement.) 129 | 130 | These requirements apply to the modified work as a whole. If 131 | identifiable sections of that work are not derived from the Program, 132 | and can be reasonably considered independent and separate works in 133 | themselves, then this License, and its terms, do not apply to those 134 | sections when you distribute them as separate works. But when you 135 | distribute the same sections as part of a whole which is a work based 136 | on the Program, the distribution of the whole must be on the terms of 137 | this License, whose permissions for other licensees extend to the 138 | entire whole, and thus to each and every part regardless of who wrote it. 139 | 140 | Thus, it is not the intent of this section to claim rights or contest 141 | your rights to work written entirely by you; rather, the intent is to 142 | exercise the right to control the distribution of derivative or 143 | collective works based on the Program. 144 | 145 | In addition, mere aggregation of another work not based on the Program 146 | with the Program (or with a work based on the Program) on a volume of 147 | a storage or distribution medium does not bring the other work under 148 | the scope of this License. 149 | 150 | 3. You may copy and distribute the Program (or a work based on it, 151 | under Section 2) in object code or executable form under the terms of 152 | Sections 1 and 2 above provided that you also do one of the following: 153 | 154 | a) Accompany it with the complete corresponding machine-readable 155 | source code, which must be distributed under the terms of Sections 156 | 1 and 2 above on a medium customarily used for software interchange; or, 157 | 158 | b) Accompany it with a written offer, valid for at least three 159 | years, to give any third party, for a charge no more than your 160 | cost of physically performing source distribution, a complete 161 | machine-readable copy of the corresponding source code, to be 162 | distributed under the terms of Sections 1 and 2 above on a medium 163 | customarily used for software interchange; or, 164 | 165 | c) Accompany it with the information you received as to the offer 166 | to distribute corresponding source code. (This alternative is 167 | allowed only for noncommercial distribution and only if you 168 | received the program in object code or executable form with such 169 | an offer, in accord with Subsection b above.) 170 | 171 | The source code for a work means the preferred form of the work for 172 | making modifications to it. For an executable work, complete source 173 | code means all the source code for all modules it contains, plus any 174 | associated interface definition files, plus the scripts used to 175 | control compilation and installation of the executable. However, as a 176 | special exception, the source code distributed need not include 177 | anything that is normally distributed (in either source or binary 178 | form) with the major components (compiler, kernel, and so on) of the 179 | operating system on which the executable runs, unless that component 180 | itself accompanies the executable. 181 | 182 | If distribution of executable or object code is made by offering 183 | access to copy from a designated place, then offering equivalent 184 | access to copy the source code from the same place counts as 185 | distribution of the source code, even though third parties are not 186 | compelled to copy the source along with the object code. 187 | 188 | 4. You may not copy, modify, sublicense, or distribute the Program 189 | except as expressly provided under this License. Any attempt 190 | otherwise to copy, modify, sublicense or distribute the Program is 191 | void, and will automatically terminate your rights under this License. 192 | However, parties who have received copies, or rights, from you under 193 | this License will not have their licenses terminated so long as such 194 | parties remain in full compliance. 195 | 196 | 5. You are not required to accept this License, since you have not 197 | signed it. However, nothing else grants you permission to modify or 198 | distribute the Program or its derivative works. These actions are 199 | prohibited by law if you do not accept this License. Therefore, by 200 | modifying or distributing the Program (or any work based on the 201 | Program), you indicate your acceptance of this License to do so, and 202 | all its terms and conditions for copying, distributing or modifying 203 | the Program or works based on it. 204 | 205 | 6. Each time you redistribute the Program (or any work based on the 206 | Program), the recipient automatically receives a license from the 207 | original licensor to copy, distribute or modify the Program subject to 208 | these terms and conditions. You may not impose any further 209 | restrictions on the recipients' exercise of the rights granted herein. 210 | You are not responsible for enforcing compliance by third parties to 211 | this License. 212 | 213 | 7. If, as a consequence of a court judgment or allegation of patent 214 | infringement or for any other reason (not limited to patent issues), 215 | conditions are imposed on you (whether by court order, agreement or 216 | otherwise) that contradict the conditions of this License, they do not 217 | excuse you from the conditions of this License. If you cannot 218 | distribute so as to satisfy simultaneously your obligations under this 219 | License and any other pertinent obligations, then as a consequence you 220 | may not distribute the Program at all. For example, if a patent 221 | license would not permit royalty-free redistribution of the Program by 222 | all those who receive copies directly or indirectly through you, then 223 | the only way you could satisfy both it and this License would be to 224 | refrain entirely from distribution of the Program. 225 | 226 | If any portion of this section is held invalid or unenforceable under 227 | any particular circumstance, the balance of the section is intended to 228 | apply and the section as a whole is intended to apply in other 229 | circumstances. 230 | 231 | It is not the purpose of this section to induce you to infringe any 232 | patents or other property right claims or to contest validity of any 233 | such claims; this section has the sole purpose of protecting the 234 | integrity of the free software distribution system, which is 235 | implemented by public license practices. Many people have made 236 | generous contributions to the wide range of software distributed 237 | through that system in reliance on consistent application of that 238 | system; it is up to the author/donor to decide if he or she is willing 239 | to distribute software through any other system and a licensee cannot 240 | impose that choice. 241 | 242 | This section is intended to make thoroughly clear what is believed to 243 | be a consequence of the rest of this License. 244 | 245 | 8. If the distribution and/or use of the Program is restricted in 246 | certain countries either by patents or by copyrighted interfaces, the 247 | original copyright holder who places the Program under this License 248 | may add an explicit geographical distribution limitation excluding 249 | those countries, so that distribution is permitted only in or among 250 | countries not thus excluded. In such case, this License incorporates 251 | the limitation as if written in the body of this License. 252 | 253 | 9. The Free Software Foundation may publish revised and/or new versions 254 | of the General Public License from time to time. Such new versions will 255 | be similar in spirit to the present version, but may differ in detail to 256 | address new problems or concerns. 257 | 258 | Each version is given a distinguishing version number. If the Program 259 | specifies a version number of this License which applies to it and "any 260 | later version", you have the option of following the terms and conditions 261 | either of that version or of any later version published by the Free 262 | Software Foundation. If the Program does not specify a version number of 263 | this License, you may choose any version ever published by the Free Software 264 | Foundation. 265 | 266 | 10. If you wish to incorporate parts of the Program into other free 267 | programs whose distribution conditions are different, write to the author 268 | to ask for permission. For software which is copyrighted by the Free 269 | Software Foundation, write to the Free Software Foundation; we sometimes 270 | make exceptions for this. Our decision will be guided by the two goals 271 | of preserving the free status of all derivatives of our free software and 272 | of promoting the sharing and reuse of software generally. 273 | 274 | NO WARRANTY 275 | 276 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 277 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 278 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 279 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 280 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 281 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 282 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 283 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 284 | REPAIR OR CORRECTION. 285 | 286 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 287 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 288 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 289 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 290 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 291 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 292 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 293 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 294 | POSSIBILITY OF SUCH DAMAGES. 295 | 296 | END OF TERMS AND CONDITIONS 297 | 298 | How to Apply These Terms to Your New Programs 299 | 300 | If you develop a new program, and you want it to be of the greatest 301 | possible use to the public, the best way to achieve this is to make it 302 | free software which everyone can redistribute and change under these terms. 303 | 304 | To do so, attach the following notices to the program. It is safest 305 | to attach them to the start of each source file to most effectively 306 | convey the exclusion of warranty; and each file should have at least 307 | the "copyright" line and a pointer to where the full notice is found. 308 | 309 | 310 | Copyright (C) 311 | 312 | This program is free software; you can redistribute it and/or modify 313 | it under the terms of the GNU General Public License as published by 314 | the Free Software Foundation; either version 2 of the License, or 315 | (at your option) any later version. 316 | 317 | This program is distributed in the hope that it will be useful, 318 | but WITHOUT ANY WARRANTY; without even the implied warranty of 319 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 320 | GNU General Public License for more details. 321 | 322 | You should have received a copy of the GNU General Public License 323 | along with this program; if not, write to the Free Software 324 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 325 | 326 | 327 | Also add information on how to contact you by electronic and paper mail. 328 | 329 | If the program is interactive, make it output a short notice like this 330 | when it starts in an interactive mode: 331 | 332 | Gnomovision version 69, Copyright (C) year name of author 333 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 334 | This is free software, and you are welcome to redistribute it 335 | under certain conditions; type `show c' for details. 336 | 337 | The hypothetical commands `show w' and `show c' should show the appropriate 338 | parts of the General Public License. Of course, the commands you use may 339 | be called something other than `show w' and `show c'; they could even be 340 | mouse-clicks or menu items--whatever suits your program. 341 | 342 | You should also get your employer (if you work as a programmer) or your 343 | school, if any, to sign a "copyright disclaimer" for the program, if 344 | necessary. Here is a sample; alter the names: 345 | 346 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 347 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 348 | 349 | , 1 April 1989 350 | Ty Coon, President of Vice 351 | 352 | This General Public License does not permit incorporating your program into 353 | proprietary programs. If your program is a subroutine library, you may 354 | consider it more useful to permit linking proprietary applications with the 355 | library. If this is what you want to do, use the GNU Library General 356 | Public License instead of this License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python BLE GATT Server (peripheral) 2 | GATT is constructed out of one or more server devices (BLE peripherals) and a client device (BLE central). 3 | 4 | A GATT server is usually a small device such as a sensor, but for some use cases you might want to have a Linux computer such as a RPi used as a GATT server. This example is meant to demonstrate how this can be done. 5 | 6 | 7 | ## Setup 8 | The instructions in this document were tested on Ubuntu 16.04. 9 | 10 | ### Bluez Installation 11 | On most distributions, you will need to upgrade Bluez in order to make this work. 12 | 13 | Install dependencies: 14 | ```bash 15 | sudo apt-get update 16 | sudo apt-get install libudev-dev libical-dev libreadline-dev libglib2.0-dev libdbus-1-dev 17 | ``` 18 | 19 | Download and install Bluez 20 | 21 | ```bash 22 | wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.45.tar.xz 23 | tar xvf bluez-5.45.tar.xz 24 | cd bluez-5.45/ 25 | ./configure 26 | make 27 | sudo make install 28 | ``` 29 | 30 | Enable experimental features for the bluetooth driver: 31 | - `sudo nano /lib/systemd/system/bluetooth.service` 32 | - Add `--experimental` to `ExecStart`. The line should look like this: 33 | 34 | `ExecStart=/usr/local/libexec/bluetooth/bluetoothd --experimental` 35 | 36 | Reload the service: 37 | ```bash 38 | systemctl daemon-reload 39 | sudo service bluetooth restart 40 | ``` 41 | 42 | ### virtualenv 43 | Install dependencies: `sudo apt-get install virtualenv python-dev libdbus-1-dev libdbus-glib-1-dev python-gi` 44 | 45 | `cd` to the the root of this repository and: 46 | 47 | ```bash 48 | virtualenv venv 49 | source venv/bin/activate 50 | pip install -r requirements.txt 51 | ln -s /usr/lib/python2.7/dist-packages/gi venv/lib/python2.7/site-packages/ 52 | ``` 53 | 54 | ## Usage 55 | Start the sample BLE GATT server: `python gatt_server_example.py` 56 | 57 | You can use a smartphone as a GATT client. I used the [GATT-IP](http://www.gatt-ip.org/) app, here it is on the [Google Play Store](https://play.google.com/store/apps/details?id=org.gatt_ip.activity&hl=en) and on the [App Store](https://itunes.apple.com/us/app/gatt-ip-bluetooth-smart-le-proxy-protocol/id940105344?mt=8) 58 | 59 | ![](http://jumper-public.s3-website.eu-central-1.amazonaws.com/gatt-ip.gif) 60 | 61 | ## License 62 | The code in this repository is based on code taken from the [BlueZ](http://www.bluez.org/) project. It is licensed under GPL 2.0 63 | -------------------------------------------------------------------------------- /adapters.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import dbus 3 | import dbus.exceptions 4 | import dbus.mainloop.glib 5 | import dbus.service 6 | 7 | 8 | BLUEZ_SERVICE_NAME = 'org.bluez' 9 | LE_ADVERTISING_MANAGER_IFACE = 'org.bluez.LEAdvertisingManager1' 10 | DBUS_OM_IFACE = 'org.freedesktop.DBus.ObjectManager' 11 | DBUS_PROP_IFACE = 'org.freedesktop.DBus.Properties' 12 | 13 | LE_ADVERTISEMENT_IFACE = 'org.bluez.LEAdvertisement1' 14 | 15 | GATT_MANAGER_IFACE = 'org.bluez.GattManager1' 16 | 17 | GATT_SERVICE_IFACE = 'org.bluez.GattService1' 18 | GATT_CHRC_IFACE = 'org.bluez.GattCharacteristic1' 19 | GATT_DESC_IFACE = 'org.bluez.GattDescriptor1' 20 | 21 | 22 | def find_adapter(bus, adapter_interface_name, adapter_name): 23 | remote_om = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME, '/'), DBUS_OM_IFACE) 24 | objects = remote_om.GetManagedObjects() 25 | 26 | for o, props in objects.items(): 27 | print('checking adapter %s, keys: %s' % (o, props.keys())) 28 | if adapter_interface_name in props.keys(): 29 | print('found adapter %s' % (o,)) 30 | if '/' + adapter_name in o: 31 | print('returning adapter %s' % (o,)) 32 | return o 33 | 34 | return None 35 | -------------------------------------------------------------------------------- /advertising.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import dbus 3 | import dbus.exceptions 4 | import dbus.mainloop.glib 5 | import dbus.service 6 | import functools 7 | 8 | import exceptions 9 | import adapters 10 | 11 | 12 | BLUEZ_SERVICE_NAME = 'org.bluez' 13 | LE_ADVERTISING_MANAGER_IFACE = 'org.bluez.LEAdvertisingManager1' 14 | DBUS_OM_IFACE = 'org.freedesktop.DBus.ObjectManager' 15 | DBUS_PROP_IFACE = 'org.freedesktop.DBus.Properties' 16 | 17 | LE_ADVERTISEMENT_IFACE = 'org.bluez.LEAdvertisement1' 18 | 19 | 20 | class Advertisement(dbus.service.Object): 21 | PATH_BASE = '/org/bluez/example/advertisement' 22 | 23 | def __init__(self, bus, index, advertising_type): 24 | self.path = self.PATH_BASE + str(index) 25 | self.bus = bus 26 | self.ad_type = advertising_type 27 | self.service_uuids = None 28 | self.manufacturer_data = None 29 | self.solicit_uuids = None 30 | self.service_data = None 31 | self.include_tx_power = None 32 | dbus.service.Object.__init__(self, bus, self.path) 33 | 34 | def get_properties(self): 35 | properties = dict() 36 | properties['Type'] = self.ad_type 37 | if self.service_uuids is not None: 38 | properties['ServiceUUIDs'] = dbus.Array(self.service_uuids, 39 | signature='s') 40 | if self.solicit_uuids is not None: 41 | properties['SolicitUUIDs'] = dbus.Array(self.solicit_uuids, 42 | signature='s') 43 | if self.manufacturer_data is not None: 44 | properties['ManufacturerData'] = dbus.Dictionary( 45 | self.manufacturer_data, signature='qv') 46 | if self.service_data is not None: 47 | properties['ServiceData'] = dbus.Dictionary(self.service_data, 48 | signature='sv') 49 | if self.include_tx_power is not None: 50 | properties['IncludeTxPower'] = dbus.Boolean(self.include_tx_power) 51 | return {LE_ADVERTISEMENT_IFACE: properties} 52 | 53 | def get_path(self): 54 | return dbus.ObjectPath(self.path) 55 | 56 | def add_service_uuid(self, uuid): 57 | if not self.service_uuids: 58 | self.service_uuids = [] 59 | self.service_uuids.append(uuid) 60 | 61 | def add_solicit_uuid(self, uuid): 62 | if not self.solicit_uuids: 63 | self.solicit_uuids = [] 64 | self.solicit_uuids.append(uuid) 65 | 66 | def add_manufacturer_data(self, manuf_code, data): 67 | if not self.manufacturer_data: 68 | self.manufacturer_data = dbus.Dictionary({}, signature='qv') 69 | self.manufacturer_data[manuf_code] = dbus.Array(data, signature='y') 70 | 71 | def add_service_data(self, uuid, data): 72 | if not self.service_data: 73 | self.service_data = dbus.Dictionary({}, signature='sv') 74 | self.service_data[uuid] = dbus.Array(data, signature='y') 75 | 76 | @dbus.service.method(DBUS_PROP_IFACE, 77 | in_signature='s', 78 | out_signature='a{sv}') 79 | def GetAll(self, interface): 80 | print('GetAll') 81 | if interface != LE_ADVERTISEMENT_IFACE: 82 | raise exceptions.InvalidArgsException() 83 | print('returning props') 84 | return self.get_properties()[LE_ADVERTISEMENT_IFACE] 85 | 86 | @dbus.service.method(LE_ADVERTISEMENT_IFACE, 87 | in_signature='', 88 | out_signature='') 89 | def Release(self): 90 | print('%s: Released!' % self.path) 91 | 92 | 93 | class TestAdvertisement(Advertisement): 94 | def __init__(self, bus, index): 95 | Advertisement.__init__(self, bus, index, 'peripheral') 96 | self.add_service_uuid('180D') 97 | self.add_service_uuid('180F') 98 | self.add_manufacturer_data(0xffff, [0x00, 0x01, 0x02, 0x03, 0x04]) 99 | self.add_service_data('9999', [0x00, 0x01, 0x02, 0x03, 0x04]) 100 | self.include_tx_power = True 101 | 102 | 103 | def register_ad_cb(): 104 | print('Advertisement registered') 105 | 106 | 107 | def register_ad_error_cb(mainloop, error): 108 | print('Failed to register advertisement: ' + str(error)) 109 | mainloop.quit() 110 | 111 | 112 | def advertising_main(mainloop, bus, adapter_name): 113 | adapter = adapters.find_adapter(bus, LE_ADVERTISING_MANAGER_IFACE, adapter_name) 114 | print('adapter: %s' % (adapter,)) 115 | if not adapter: 116 | raise Exception('LEAdvertisingManager1 interface not found') 117 | 118 | adapter_props = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME, adapter), 119 | "org.freedesktop.DBus.Properties") 120 | 121 | adapter_props.Set("org.bluez.Adapter1", "Powered", dbus.Boolean(1)) 122 | 123 | ad_manager = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME, adapter), 124 | LE_ADVERTISING_MANAGER_IFACE) 125 | 126 | test_advertisement = TestAdvertisement(bus, 0) 127 | 128 | ad_manager.RegisterAdvertisement(test_advertisement.get_path(), {}, 129 | reply_handler=register_ad_cb, 130 | error_handler=functools.partial(register_ad_error_cb, mainloop)) 131 | 132 | -------------------------------------------------------------------------------- /exceptions.py: -------------------------------------------------------------------------------- 1 | import dbus.exceptions 2 | 3 | 4 | class InvalidArgsException(dbus.exceptions.DBusException): 5 | _dbus_error_name = 'org.freedesktop.DBus.Error.InvalidArgs' 6 | 7 | 8 | class NotSupportedException(dbus.exceptions.DBusException): 9 | _dbus_error_name = 'org.bluez.Error.NotSupported' 10 | 11 | 12 | class NotPermittedException(dbus.exceptions.DBusException): 13 | _dbus_error_name = 'org.bluez.Error.NotPermitted' 14 | 15 | 16 | class InvalidValueLengthException(dbus.exceptions.DBusException): 17 | _dbus_error_name = 'org.bluez.Error.InvalidValueLength' 18 | 19 | 20 | class FailedException(dbus.exceptions.DBusException): 21 | _dbus_error_name = 'org.bluez.Error.Failed' 22 | 23 | -------------------------------------------------------------------------------- /gatt_server.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import dbus 3 | import dbus.exceptions 4 | import dbus.mainloop.glib 5 | import dbus.service 6 | 7 | import array 8 | 9 | import functools 10 | 11 | try: 12 | from gi.repository import GObject 13 | except ImportError: 14 | import gobject as GObject 15 | 16 | from random import randint 17 | 18 | import exceptions 19 | import adapters 20 | 21 | BLUEZ_SERVICE_NAME = 'org.bluez' 22 | LE_ADVERTISING_MANAGER_IFACE = 'org.bluez.LEAdvertisingManager1' 23 | DBUS_OM_IFACE = 'org.freedesktop.DBus.ObjectManager' 24 | DBUS_PROP_IFACE = 'org.freedesktop.DBus.Properties' 25 | 26 | LE_ADVERTISEMENT_IFACE = 'org.bluez.LEAdvertisement1' 27 | 28 | GATT_MANAGER_IFACE = 'org.bluez.GattManager1' 29 | 30 | GATT_SERVICE_IFACE = 'org.bluez.GattService1' 31 | GATT_CHRC_IFACE = 'org.bluez.GattCharacteristic1' 32 | GATT_DESC_IFACE = 'org.bluez.GattDescriptor1' 33 | 34 | 35 | 36 | class Application(dbus.service.Object): 37 | """ 38 | org.bluez.GattApplication1 interface implementation 39 | """ 40 | def __init__(self, bus): 41 | self.path = '/' 42 | self.services = [] 43 | dbus.service.Object.__init__(self, bus, self.path) 44 | self.add_service(HeartRateService(bus, 0)) 45 | self.add_service(BatteryService(bus, 1)) 46 | self.add_service(TestService(bus, 2)) 47 | 48 | def get_path(self): 49 | return dbus.ObjectPath(self.path) 50 | 51 | def add_service(self, service): 52 | self.services.append(service) 53 | 54 | @dbus.service.method(DBUS_OM_IFACE, out_signature='a{oa{sa{sv}}}') 55 | def GetManagedObjects(self): 56 | response = {} 57 | print('GetManagedObjects') 58 | 59 | for service in self.services: 60 | response[service.get_path()] = service.get_properties() 61 | chrcs = service.get_characteristics() 62 | for chrc in chrcs: 63 | response[chrc.get_path()] = chrc.get_properties() 64 | descs = chrc.get_descriptors() 65 | for desc in descs: 66 | response[desc.get_path()] = desc.get_properties() 67 | 68 | return response 69 | 70 | 71 | class Service(dbus.service.Object): 72 | """ 73 | org.bluez.GattService1 interface implementation 74 | """ 75 | PATH_BASE = '/org/bluez/example/service' 76 | 77 | def __init__(self, bus, index, uuid, primary): 78 | self.path = self.PATH_BASE + str(index) 79 | self.bus = bus 80 | self.uuid = uuid 81 | self.primary = primary 82 | self.characteristics = [] 83 | dbus.service.Object.__init__(self, bus, self.path) 84 | 85 | def get_properties(self): 86 | return { 87 | GATT_SERVICE_IFACE: { 88 | 'UUID': self.uuid, 89 | 'Primary': self.primary, 90 | 'Characteristics': dbus.Array( 91 | self.get_characteristic_paths(), 92 | signature='o') 93 | } 94 | } 95 | 96 | def get_path(self): 97 | return dbus.ObjectPath(self.path) 98 | 99 | def add_characteristic(self, characteristic): 100 | self.characteristics.append(characteristic) 101 | 102 | def get_characteristic_paths(self): 103 | result = [] 104 | for chrc in self.characteristics: 105 | result.append(chrc.get_path()) 106 | return result 107 | 108 | def get_characteristics(self): 109 | return self.characteristics 110 | 111 | @dbus.service.method(DBUS_PROP_IFACE, 112 | in_signature='s', 113 | out_signature='a{sv}') 114 | def GetAll(self, interface): 115 | if interface != GATT_SERVICE_IFACE: 116 | raise exceptions.InvalidArgsException() 117 | 118 | return self.get_properties()[GATT_SERVICE_IFACE] 119 | 120 | 121 | class Characteristic(dbus.service.Object): 122 | """ 123 | org.bluez.GattCharacteristic1 interface implementation 124 | """ 125 | def __init__(self, bus, index, uuid, flags, service): 126 | self.path = service.path + '/char' + str(index) 127 | self.bus = bus 128 | self.uuid = uuid 129 | self.service = service 130 | self.flags = flags 131 | self.descriptors = [] 132 | dbus.service.Object.__init__(self, bus, self.path) 133 | 134 | def get_properties(self): 135 | return { 136 | GATT_CHRC_IFACE: { 137 | 'Service': self.service.get_path(), 138 | 'UUID': self.uuid, 139 | 'Flags': self.flags, 140 | 'Descriptors': dbus.Array( 141 | self.get_descriptor_paths(), 142 | signature='o') 143 | } 144 | } 145 | 146 | def get_path(self): 147 | return dbus.ObjectPath(self.path) 148 | 149 | def add_descriptor(self, descriptor): 150 | self.descriptors.append(descriptor) 151 | 152 | def get_descriptor_paths(self): 153 | result = [] 154 | for desc in self.descriptors: 155 | result.append(desc.get_path()) 156 | return result 157 | 158 | def get_descriptors(self): 159 | return self.descriptors 160 | 161 | @dbus.service.method(DBUS_PROP_IFACE, 162 | in_signature='s', 163 | out_signature='a{sv}') 164 | def GetAll(self, interface): 165 | if interface != GATT_CHRC_IFACE: 166 | raise exceptions.InvalidArgsException() 167 | 168 | return self.get_properties()[GATT_CHRC_IFACE] 169 | 170 | @dbus.service.method(GATT_CHRC_IFACE, 171 | in_signature='a{sv}', 172 | out_signature='ay') 173 | def ReadValue(self, options): 174 | print('Default ReadValue called, returning error') 175 | raise exceptions.NotSupportedException() 176 | 177 | @dbus.service.method(GATT_CHRC_IFACE, in_signature='aya{sv}') 178 | def WriteValue(self, value, options): 179 | print('Default WriteValue called, returning error') 180 | raise exceptions.NotSupportedException() 181 | 182 | @dbus.service.method(GATT_CHRC_IFACE) 183 | def StartNotify(self): 184 | print('Default StartNotify called, returning error') 185 | raise exceptions.NotSupportedException() 186 | 187 | @dbus.service.method(GATT_CHRC_IFACE) 188 | def StopNotify(self): 189 | print('Default StopNotify called, returning error') 190 | raise exceptions.NotSupportedException() 191 | 192 | @dbus.service.signal(DBUS_PROP_IFACE, 193 | signature='sa{sv}as') 194 | def PropertiesChanged(self, interface, changed, invalidated): 195 | pass 196 | 197 | 198 | class Descriptor(dbus.service.Object): 199 | """ 200 | org.bluez.GattDescriptor1 interface implementation 201 | """ 202 | def __init__(self, bus, index, uuid, flags, characteristic): 203 | self.path = characteristic.path + '/desc' + str(index) 204 | self.bus = bus 205 | self.uuid = uuid 206 | self.flags = flags 207 | self.chrc = characteristic 208 | dbus.service.Object.__init__(self, bus, self.path) 209 | 210 | def get_properties(self): 211 | return { 212 | GATT_DESC_IFACE: { 213 | 'Characteristic': self.chrc.get_path(), 214 | 'UUID': self.uuid, 215 | 'Flags': self.flags, 216 | } 217 | } 218 | 219 | def get_path(self): 220 | return dbus.ObjectPath(self.path) 221 | 222 | @dbus.service.method(DBUS_PROP_IFACE, 223 | in_signature='s', 224 | out_signature='a{sv}') 225 | def GetAll(self, interface): 226 | if interface != GATT_DESC_IFACE: 227 | raise exceptions.InvalidArgsException() 228 | 229 | return self.get_properties()[GATT_DESC_IFACE] 230 | 231 | @dbus.service.method(GATT_DESC_IFACE, 232 | in_signature='a{sv}', 233 | out_signature='ay') 234 | def ReadValue(self, options): 235 | print('Default ReadValue called, returning error') 236 | raise exceptions.NotSupportedException() 237 | 238 | @dbus.service.method(GATT_DESC_IFACE, in_signature='aya{sv}') 239 | def WriteValue(self, value, options): 240 | print('Default WriteValue called, returning error') 241 | raise exceptions.NotSupportedException() 242 | 243 | 244 | class HeartRateService(Service): 245 | """ 246 | Fake Heart Rate Service that simulates a fake heart beat and control point 247 | behavior. 248 | 249 | """ 250 | HR_UUID = '0000180d-0000-1000-8000-00805f9b34fb' 251 | 252 | def __init__(self, bus, index): 253 | Service.__init__(self, bus, index, self.HR_UUID, True) 254 | self.add_characteristic(HeartRateMeasurementChrc(bus, 0, self)) 255 | self.add_characteristic(BodySensorLocationChrc(bus, 1, self)) 256 | self.add_characteristic(HeartRateControlPointChrc(bus, 2, self)) 257 | self.energy_expended = 0 258 | 259 | 260 | class HeartRateMeasurementChrc(Characteristic): 261 | HR_MSRMT_UUID = '00002a37-0000-1000-8000-00805f9b34fb' 262 | 263 | def __init__(self, bus, index, service): 264 | Characteristic.__init__( 265 | self, bus, index, 266 | self.HR_MSRMT_UUID, 267 | ['notify'], 268 | service) 269 | self.notifying = False 270 | self.hr_ee_count = 0 271 | 272 | def hr_msrmt_cb(self): 273 | value = [] 274 | value.append(dbus.Byte(0x06)) 275 | 276 | value.append(dbus.Byte(randint(90, 130))) 277 | 278 | if self.hr_ee_count % 10 == 0: 279 | value[0] = dbus.Byte(value[0] | 0x08) 280 | value.append(dbus.Byte(self.service.energy_expended & 0xff)) 281 | value.append(dbus.Byte((self.service.energy_expended >> 8) & 0xff)) 282 | 283 | self.service.energy_expended = \ 284 | min(0xffff, self.service.energy_expended + 1) 285 | self.hr_ee_count += 1 286 | 287 | print('Updating value: ' + repr(value)) 288 | 289 | self.PropertiesChanged(GATT_CHRC_IFACE, { 'Value': value }, []) 290 | 291 | return self.notifying 292 | 293 | def _update_hr_msrmt_simulation(self): 294 | print('Update HR Measurement Simulation') 295 | 296 | if not self.notifying: 297 | return 298 | 299 | GObject.timeout_add(1000, self.hr_msrmt_cb) 300 | 301 | def StartNotify(self): 302 | if self.notifying: 303 | print('Already notifying, nothing to do') 304 | return 305 | 306 | self.notifying = True 307 | self._update_hr_msrmt_simulation() 308 | 309 | def StopNotify(self): 310 | if not self.notifying: 311 | print('Not notifying, nothing to do') 312 | return 313 | 314 | self.notifying = False 315 | self._update_hr_msrmt_simulation() 316 | 317 | 318 | class BodySensorLocationChrc(Characteristic): 319 | BODY_SNSR_LOC_UUID = '00002a38-0000-1000-8000-00805f9b34fb' 320 | 321 | def __init__(self, bus, index, service): 322 | Characteristic.__init__( 323 | self, bus, index, 324 | self.BODY_SNSR_LOC_UUID, 325 | ['read'], 326 | service) 327 | 328 | def ReadValue(self, options): 329 | # Return 'Chest' as the sensor location. 330 | return [ 0x01 ] 331 | 332 | class HeartRateControlPointChrc(Characteristic): 333 | HR_CTRL_PT_UUID = '00002a39-0000-1000-8000-00805f9b34fb' 334 | 335 | def __init__(self, bus, index, service): 336 | Characteristic.__init__( 337 | self, bus, index, 338 | self.HR_CTRL_PT_UUID, 339 | ['write'], 340 | service) 341 | 342 | def WriteValue(self, value, options): 343 | print('Heart Rate Control Point WriteValue called') 344 | 345 | if len(value) != 1: 346 | raise exceptions.InvalidValueLengthException() 347 | 348 | byte = value[0] 349 | print('Control Point value: ' + repr(byte)) 350 | 351 | if byte != 1: 352 | raise exceptions.FailedException("0x80") 353 | 354 | print('Energy Expended field reset!') 355 | self.service.energy_expended = 0 356 | 357 | 358 | class BatteryService(Service): 359 | """ 360 | Fake Battery service that emulates a draining battery. 361 | 362 | """ 363 | BATTERY_UUID = '180f' 364 | 365 | def __init__(self, bus, index): 366 | Service.__init__(self, bus, index, self.BATTERY_UUID, True) 367 | self.add_characteristic(BatteryLevelCharacteristic(bus, 0, self)) 368 | 369 | 370 | class BatteryLevelCharacteristic(Characteristic): 371 | """ 372 | Fake Battery Level characteristic. The battery level is drained by 2 points 373 | every 5 seconds. 374 | 375 | """ 376 | BATTERY_LVL_UUID = '2a19' 377 | 378 | def __init__(self, bus, index, service): 379 | Characteristic.__init__( 380 | self, bus, index, 381 | self.BATTERY_LVL_UUID, 382 | ['read', 'notify'], 383 | service) 384 | self.notifying = False 385 | self.battery_lvl = 100 386 | GObject.timeout_add(5000, self.drain_battery) 387 | 388 | def notify_battery_level(self): 389 | if not self.notifying: 390 | return 391 | self.PropertiesChanged( 392 | GATT_CHRC_IFACE, 393 | {'Value': [dbus.Byte(self.battery_lvl)] }, []) 394 | 395 | def drain_battery(self): 396 | if self.battery_lvl > 0: 397 | self.battery_lvl -= 2 398 | if self.battery_lvl < 0: 399 | self.battery_lvl = 0 400 | print('Battery level: ' + repr(self.battery_lvl)) 401 | self.notify_battery_level() 402 | return True 403 | 404 | def ReadValue(self, options): 405 | print('Battery level read: ' + repr(self.battery_lvl)) 406 | return [dbus.Byte(self.battery_lvl)] 407 | 408 | def StartNotify(self): 409 | if self.notifying: 410 | print('Already notifying, nothing to do') 411 | return 412 | 413 | self.notifying = True 414 | self.notify_battery_level() 415 | 416 | def StopNotify(self): 417 | if not self.notifying: 418 | print('Not notifying, nothing to do') 419 | return 420 | 421 | self.notifying = False 422 | 423 | 424 | class TestService(Service): 425 | """ 426 | Dummy test service that provides characteristics and descriptors that 427 | exercise various API functionality. 428 | 429 | """ 430 | TEST_SVC_UUID = '12345678-1234-5678-1234-56789abcdef0' 431 | 432 | def __init__(self, bus, index): 433 | Service.__init__(self, bus, index, self.TEST_SVC_UUID, True) 434 | self.add_characteristic(TestCharacteristic(bus, 0, self)) 435 | self.add_characteristic(TestEncryptCharacteristic(bus, 1, self)) 436 | self.add_characteristic(TestSecureCharacteristic(bus, 2, self)) 437 | 438 | class TestCharacteristic(Characteristic): 439 | """ 440 | Dummy test characteristic. Allows writing arbitrary bytes to its value, and 441 | contains "extended properties", as well as a test descriptor. 442 | 443 | """ 444 | TEST_CHRC_UUID = '12345678-1234-5678-1234-56789abcdef1' 445 | 446 | def __init__(self, bus, index, service): 447 | Characteristic.__init__( 448 | self, bus, index, 449 | self.TEST_CHRC_UUID, 450 | ['read', 'write', 'writable-auxiliaries'], 451 | service) 452 | self.value = [] 453 | self.add_descriptor(TestDescriptor(bus, 0, self)) 454 | self.add_descriptor( 455 | CharacteristicUserDescriptionDescriptor(bus, 1, self)) 456 | 457 | def ReadValue(self, options): 458 | print('TestCharacteristic Read: ' + repr(self.value)) 459 | return self.value 460 | 461 | def WriteValue(self, value, options): 462 | print('TestCharacteristic Write: ' + repr(value)) 463 | self.value = value 464 | 465 | 466 | class TestDescriptor(Descriptor): 467 | """ 468 | Dummy test descriptor. Returns a static value. 469 | 470 | """ 471 | TEST_DESC_UUID = '12345678-1234-5678-1234-56789abcdef2' 472 | 473 | def __init__(self, bus, index, characteristic): 474 | Descriptor.__init__( 475 | self, bus, index, 476 | self.TEST_DESC_UUID, 477 | ['read', 'write'], 478 | characteristic) 479 | 480 | def ReadValue(self, options): 481 | return [ 482 | dbus.Byte('T'), dbus.Byte('e'), dbus.Byte('s'), dbus.Byte('t') 483 | ] 484 | 485 | 486 | class CharacteristicUserDescriptionDescriptor(Descriptor): 487 | """ 488 | Writable CUD descriptor. 489 | 490 | """ 491 | CUD_UUID = '2901' 492 | 493 | def __init__(self, bus, index, characteristic): 494 | self.writable = 'writable-auxiliaries' in characteristic.flags 495 | self.value = array.array('B', b'This is a characteristic for testing') 496 | self.value = self.value.tolist() 497 | Descriptor.__init__( 498 | self, bus, index, 499 | self.CUD_UUID, 500 | ['read', 'write'], 501 | characteristic) 502 | 503 | def ReadValue(self, options): 504 | return self.value 505 | 506 | def WriteValue(self, value, options): 507 | if not self.writable: 508 | raise exceptions.NotPermittedException() 509 | self.value = value 510 | 511 | class TestEncryptCharacteristic(Characteristic): 512 | """ 513 | Dummy test characteristic requiring encryption. 514 | 515 | """ 516 | TEST_CHRC_UUID = '12345678-1234-5678-1234-56789abcdef3' 517 | 518 | def __init__(self, bus, index, service): 519 | Characteristic.__init__( 520 | self, bus, index, 521 | self.TEST_CHRC_UUID, 522 | ['encrypt-read', 'encrypt-write'], 523 | service) 524 | self.value = [] 525 | self.add_descriptor(TestEncryptDescriptor(bus, 2, self)) 526 | self.add_descriptor( 527 | CharacteristicUserDescriptionDescriptor(bus, 3, self)) 528 | 529 | def ReadValue(self, options): 530 | print('TestEncryptCharacteristic Read: ' + repr(self.value)) 531 | return self.value 532 | 533 | def WriteValue(self, value, options): 534 | print('TestEncryptCharacteristic Write: ' + repr(value)) 535 | self.value = value 536 | 537 | class TestEncryptDescriptor(Descriptor): 538 | """ 539 | Dummy test descriptor requiring encryption. Returns a static value. 540 | 541 | """ 542 | TEST_DESC_UUID = '12345678-1234-5678-1234-56789abcdef4' 543 | 544 | def __init__(self, bus, index, characteristic): 545 | Descriptor.__init__( 546 | self, bus, index, 547 | self.TEST_DESC_UUID, 548 | ['encrypt-read', 'encrypt-write'], 549 | characteristic) 550 | 551 | def ReadValue(self, options): 552 | return [ 553 | dbus.Byte('T'), dbus.Byte('e'), dbus.Byte('s'), dbus.Byte('t') 554 | ] 555 | 556 | 557 | class TestSecureCharacteristic(Characteristic): 558 | """ 559 | Dummy test characteristic requiring secure connection. 560 | 561 | """ 562 | TEST_CHRC_UUID = '12345678-1234-5678-1234-56789abcdef5' 563 | 564 | def __init__(self, bus, index, service): 565 | Characteristic.__init__( 566 | self, bus, index, 567 | self.TEST_CHRC_UUID, 568 | ['secure-read', 'secure-write'], 569 | service) 570 | self.value = [] 571 | self.add_descriptor(TestSecureDescriptor(bus, 2, self)) 572 | self.add_descriptor( 573 | CharacteristicUserDescriptionDescriptor(bus, 3, self)) 574 | 575 | def ReadValue(self, options): 576 | print('TestSecureCharacteristic Read: ' + repr(self.value)) 577 | return self.value 578 | 579 | def WriteValue(self, value, options): 580 | print('TestSecureCharacteristic Write: ' + repr(value)) 581 | self.value = value 582 | 583 | 584 | class TestSecureDescriptor(Descriptor): 585 | """ 586 | Dummy test descriptor requiring secure connection. Returns a static value. 587 | 588 | """ 589 | TEST_DESC_UUID = '12345678-1234-5678-1234-56789abcdef6' 590 | 591 | def __init__(self, bus, index, characteristic): 592 | Descriptor.__init__( 593 | self, bus, index, 594 | self.TEST_DESC_UUID, 595 | ['secure-read', 'secure-write'], 596 | characteristic) 597 | 598 | def ReadValue(self, options): 599 | return [ 600 | dbus.Byte('T'), dbus.Byte('e'), dbus.Byte('s'), dbus.Byte('t') 601 | ] 602 | 603 | def register_app_cb(): 604 | print('GATT application registered') 605 | 606 | 607 | def register_app_error_cb(mainloop, error): 608 | print('Failed to register application: ' + str(error)) 609 | mainloop.quit() 610 | 611 | 612 | def gatt_server_main(mainloop, bus, adapter_name): 613 | adapter = adapters.find_adapter(bus, GATT_MANAGER_IFACE, adapter_name) 614 | if not adapter: 615 | raise Exception('GattManager1 interface not found') 616 | 617 | service_manager = dbus.Interface( 618 | bus.get_object(BLUEZ_SERVICE_NAME, adapter), 619 | GATT_MANAGER_IFACE) 620 | 621 | app = Application(bus) 622 | 623 | print('Registering GATT application...') 624 | 625 | service_manager.RegisterApplication(app.get_path(), {}, 626 | reply_handler=register_app_cb, 627 | error_handler=functools.partial(register_app_error_cb, mainloop)) 628 | 629 | -------------------------------------------------------------------------------- /gatt_server_example.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import dbus 3 | import dbus.exceptions 4 | import dbus.mainloop.glib 5 | import dbus.service 6 | 7 | import array 8 | try: 9 | from gi.repository import GObject 10 | except ImportError: 11 | import gobject as GObject 12 | import advertising 13 | import gatt_server 14 | import argparse 15 | 16 | 17 | def main(): 18 | parser = argparse.ArgumentParser() 19 | parser.add_argument('-a', '--adapter-name', type=str, help='Adapter name', default='') 20 | args = parser.parse_args() 21 | adapter_name = args.adapter_name 22 | 23 | dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) 24 | bus = dbus.SystemBus() 25 | mainloop = GObject.MainLoop() 26 | 27 | advertising.advertising_main(mainloop, bus, adapter_name) 28 | gatt_server.gatt_server_main(mainloop, bus, adapter_name) 29 | mainloop.run() 30 | 31 | if __name__ == '__main__': 32 | main() 33 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | dbus-python --------------------------------------------------------------------------------