Difference between revisions of "Dahdi dummy"
Jump to navigation
Jump to search
(Created page with "It looks like John David has renamed dummy to hrtimer, dummy is designed to provide good timing on systems lacking dahdi hardware. I've attached strings of his module and th...") |
|||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | [[category:app_rpt]] | |
− | |||
− | |||
− | + | dahdi_dummy is the timing only dahdi driver for olver versions of asterisk. It's not needed on intel as newer dahdi doesn't need it. On the RPi or ARM platforms it's really useful. | |
− | + | Unfortunately John David McGough, KB4FXC of [http://www.inttek.net/inttek2/ Internet Technologies, Inc] has taken this code, removed the author and renamed it as part of the pirated software known as [https://hamvoip.org/ HamVoIP]. | |
− | + | ===I've made a video presentation of this on [https://www.youtube.com/watch?v=L6CLm8H6x44&t=1680s youtube]=== | |
− | [ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | = I don't care, I just want this to work on ASL 1.01! = | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Ok, here's the skinny on how to make this work on an [https://wiki.allstarlink.org/wiki/Main_Page#Downloads ASL 1.01 system]. | |
− | + | # ensure your system is up and going, with the kernel pinned per the [http://dvswitch.org/files/ASL_Images/Raspberry_Pi/Stretch/ASL_1.01-20180228-armhf-raspbian-stretch-image.readme readme] | |
− | + | ## apt-mark hold raspberrypi-kernel-headers raspberrypi-kernel | |
− | + | # apt-get install gcc raspberrypi-kernel-headers make vim git | |
− | + | # vim /usr/src/asl-dahdi-linux-2.11.1/linux/drivers/dahdi/Kbuild remove the # from the dummy file | |
− | + | # cd /usr/src/asl-dahdi-linux-2.11.1 | |
− | + | # make | |
− | + | # make install | |
− | --- | + | # echo -e "#needed for rpi timing \ndahdi_dummy" >>/etc/modules # add it to modules.conf |
− | + | # modprobe dahdi_dummy | |
− | + | # service restart asterisk | |
− | + | Verify : | |
− | + | StPeteRpt*CLI> dahdi show status | |
− | + | Description Alarms IRQ bpviol CRC4 | |
− | + | DAHDI_DUMMY/1 (source: HRtimer) 1 UNCONFIGUR 0 0 0 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | I'm not on the admin list, so unicast if you have a question. | + | |
+ | |||
+ | = Support Files about this = | ||
+ | |||
+ | [[media:HR Timer presentation.pdf|My presentation slides as presented on youtube]] | ||
+ | |||
+ | [[File:HamVoIP-Theft.tar.gz|thumb|Tarball of the HamVoIP theft of GPL code]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == compare of the ASM code between the two drivers == | ||
+ | |||
+ | dahdi_hrtimer.ko-stripped: file format elf32-littlearm dahdi_dummy.ko-stripped: file format elf32-littlearm | ||
+ | |||
+ | |||
+ | Disassembly of section .text: Disassembly of section .text: | ||
+ | |||
+ | 00000000 <.text>: 00000000 <.text>: | ||
+ | 0: e92d40f0 push {r4, r5, r6, r7, lr} 0: e92d40f0 push {r4, r5, r6, r7, lr} | ||
+ | 4: e3004000 movw r4, #0 4: e3004000 movw r4, #0 | ||
+ | 8: e3404000 movt r4, #0 8: e3404000 movt r4, #0 | ||
+ | c: e1a06000 mov r6, r0 c: e1a06000 mov r6, r0 | ||
+ | 10: e5940000 ldr r0, [r4] 10: e5940000 ldr r0, [r4] | ||
+ | 14: e24dd00c sub sp, sp, #12 14: e24dd00c sub sp, sp, #12 | ||
+ | 18: e2800004 add r0, r0, #4 18: e2800004 add r0, r0, #4 | ||
+ | 1c: e10f5000 mrs r5, CPSR 1c: e10f5000 mrs r5, CPSR | ||
+ | 20: f10c0080 cpsid i 20: f10c0080 cpsid i | ||
+ | 24: ebfffffe bl 0x24 24: ebfffffe bl 0x24 | ||
+ | 28: e3c55040 bic r5, r5, #64 ; 0x40 28: e3c55040 bic r5, r5, #64 ; 0x40 | ||
+ | 2c: e10f3000 mrs r3, CPSR 2c: e10f3000 mrs r3, CPSR | ||
+ | 30: e2033040 and r3, r3, #64 ; 0x40 30: e2033040 and r3, r3, #64 ; 0x40 | ||
+ | 34: e1835005 orr r5, r3, r5 34: e1835005 orr r5, r3, r5 | ||
+ | 38: e121f005 msr CPSR_c, r5 38: e121f005 msr CPSR_c, r5 | ||
+ | 3c: e5940000 ldr r0, [r4] 3c: e5940000 ldr r0, [r4] | ||
+ | 40: e2800004 add r0, r0, #4 40: e2800004 add r0, r0, #4 | ||
+ | 44: e10f5000 mrs r5, CPSR 44: e10f5000 mrs r5, CPSR | ||
+ | 48: f10c0080 cpsid i 48: f10c0080 cpsid i | ||
+ | 4c: ebfffffe bl 0x4c 4c: ebfffffe bl 0x4c | ||
+ | 50: e3c55040 bic r5, r5, #64 ; 0x40 50: e3c55040 bic r5, r5, #64 ; 0x40 | ||
+ | 54: e10f3000 mrs r3, CPSR 54: e10f3000 mrs r3, CPSR | ||
+ | 58: e2033040 and r3, r3, #64 ; 0x40 58: e2033040 and r3, r3, #64 ; 0x40 | ||
+ | 5c: e1835005 orr r5, r3, r5 5c: e1835005 orr r5, r3, r5 | ||
+ | 60: e121f005 msr CPSR_c, r5 60: e121f005 msr CPSR_c, r5 | ||
+ | 64: e1c621d0 ldrd r2, [r6, #16] 64: e1c621d0 ldrd r2, [r6, #16] | ||
+ | 68: e3046240 movw r6, #16960 ; 0x4240 68: e3046240 movw r6, #16960 ; 0x4240 | ||
+ | 6c: e340600f movt r6, #15 6c: e340600f movt r6, #15 | ||
+ | 70: e3a07000 mov r7, #0 70: e3a07000 mov r7, #0 | ||
+ | 74: e2840008 add r0, r4, #8 74: e2840008 add r0, r4, #8 | ||
+ | 78: e1cd60f0 strd r6, [sp] 78: e1cd60f0 strd r6, [sp] | ||
+ | 7c: ebfffffe bl 0x7c 7c: ebfffffe bl 0x7c | ||
+ | 80: e3500001 cmp r0, #1 80: e3500001 cmp r0, #1 | ||
+ | 84: 9a000005 bls 0xa0 84: 9a000005 bls 0xa0 | ||
+ | 88: e1a05000 mov r5, r0 88: e1a05000 mov r5, r0 | ||
+ | 8c: e3000000 movw r0, #0 8c: e3000000 movw r0, #0 | ||
+ | 90: e3400000 movt r0, #0 90: e3400000 movt r0, #0 | ||
+ | 94: ebfffffe bl 0x94 94: ebfffffe bl 0x94 | ||
+ | 98: e3500000 cmp r0, #0 98: e3500000 cmp r0, #0 | ||
+ | 9c: 1a000017 bne 0x100 9c: 1a000013 bne 0xf0 | ||
+ | a0: e5943038 ldr r3, [r4, #56] ; 0x38 a0: e5942038 ldr r2, [r4, #56] ; 0x38 | ||
+ | a4: e3002000 movw r2, #0 a4: e3003000 movw r3, #0 | ||
+ | a8: e3402000 movt r2, #0 a8: e3403000 movt r3, #0 | ||
+ | ac: e3530001 cmp r3, #1 ac: e3520000 cmp r2, #0 | ||
+ | b0: da00000b ble 0xe4 b0: 0a00000b beq 0xe4 | ||
+ | b4: e592303c ldr r3, [r2, #60] ; 0x3c b4: e593103c ldr r1, [r3, #60] ; 0x3c | ||
+ | b8: e3080bad movw r0, #35757 ; 0x8bad b8: e3082bad movw r2, #35757 ; 0x8bad | ||
+ | bc: e34608db movt r0, #26843 ; 0x68db bc: e34628db movt r2, #26843 ; 0x68db | ||
+ | c0: e301c388 movw ip, #5000 ; 0x1388 c0: e3010388 movw r0, #5000 ; 0x1388 | ||
+ | c4: e2831001 add r1, r3, #1 c4: e281c001 add ip, r1, #1 | ||
+ | c8: e582103c str r1, [r2, #60] ; 0x3c c8: e583c03c str ip, [r3, #60] ; 0x3c | ||
+ | cc: e0c10093 smull r0, r1, r3, r0 cc: e0c32291 smull r2, r3, r1, r2 | ||
+ | d0: e1a02fc3 asr r2, r3, #31 d0: e1a02fc1 asr r2, r1, #31 | ||
+ | d4: e06225c1 rsb r2, r2, r1, asr #11 d4: e06225c3 rsb r2, r2, r3, asr #11 | ||
+ | d8: e063329c mls r3, ip, r2, r3 d8: e0631290 mls r3, r0, r2, r1 | ||
+ | dc: e3530000 cmp r3, #0 dc: e3530000 cmp r3, #0 | ||
+ | e0: 0a000002 beq 0xf0 e0: 0a000007 beq 0x104 | ||
+ | e4: e3a00001 mov r0, #1 e4: e3a00001 mov r0, #1 | ||
+ | e8: e28dd00c add sp, sp, #12 e8: e28dd00c add sp, sp, #12 | ||
+ | ec: e8bd80f0 pop {r4, r5, r6, r7, pc} ec: e8bd80f0 pop {r4, r5, r6, r7, pc} | ||
+ | f0: e3000000 movw r0, #0 f0: e3000000 movw r0, #0 | ||
+ | f4: e3400000 movt r0, #0 f4: e2451001 sub r1, r5, #1 | ||
+ | f8: ebfffffe bl 0xf8 f8: e3400000 movt r0, #0 | ||
+ | fc: eafffff8 b 0xe4 fc: ebfffffe bl 0xfc | ||
+ | 100: e3000000 movw r0, #0 100: eaffffe6 b 0xa0 | ||
+ | 104: e2451001 sub r1, r5, #1 104: e3000000 movw r0, #0 | ||
+ | 108: e3400000 movt r0, #0 108: e3400000 movt r0, #0 | ||
+ | 10c: ebfffffe bl 0x10c 10c: ebfffffe bl 0x10c | ||
+ | 110: eaffffe2 b 0xa0 110: eafffff3 b 0xe4 | ||
+ | 114: e3003000 movw r3, #0 114: e3003000 movw r3, #0 | ||
+ | 118: e30810c0 movw r1, #32960 ; 0x80c0 118: e30810c0 movw r1, #32960 ; 0x80c0 | ||
+ | 11c: e3403000 movt r3, #0 11c: e3403000 movt r3, #0 | ||
+ | 120: e3401060 movt r1, #96 ; 0x60 120: e3401060 movt r1, #96 ; 0x60 | ||
+ | 124: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} 124: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} | ||
+ | 128: e3002b38 movw r2, #2872 ; 0xb38 128: e3002b38 movw r2, #2872 ; 0xb38 | ||
+ | 12c: e24dd014 sub sp, sp, #20 12c: e24dd014 sub sp, sp, #20 | ||
+ | 130: e5930030 ldr r0, [r3, #48] ; 0x30 130: e5930030 ldr r0, [r3, #48] ; 0x30 | ||
+ | 134: ebfffffe bl 0x134 134: ebfffffe bl 0x134 | ||
+ | 138: e3005000 movw r5, #0 138: e3005000 movw r5, #0 | ||
+ | 13c: e3405000 movt r5, #0 13c: e3405000 movt r5, #0 | ||
+ | 140: e3500000 cmp r0, #0 140: e3500000 cmp r0, #0 | ||
+ | 144: e5850000 str r0, [r5] 144: e5850000 str r0, [r5] | ||
+ | 148: 0a000047 beq 0x26c 148: 0a000047 beq 0x26c | ||
+ | 14c: e1a04000 mov r4, r0 14c: e1a04000 mov r4, r0 | ||
+ | 150: ebfffffe bl 0x150 150: ebfffffe bl 0x150 | ||
+ | 154: e3500000 cmp r0, #0 154: e3500000 cmp r0, #0 | ||
+ | 158: e5840000 str r0, [r4] 158: e5840000 str r0, [r4] | ||
+ | 15c: 0a000040 beq 0x264 15c: 0a000040 beq 0x264 | ||
+ | 160: e3001000 movw r1, #0 160: e3001000 movw r1, #0 | ||
+ | 164: e2800018 add r0, r0, #24 164: e2800018 add r0, r0, #24 | ||
+ | 168: e3401000 movt r1, #0 168: e3401000 movt r1, #0 | ||
+ | 16c: e3a06001 mov r6, #1 16c: e2847e11 add r7, r4, #272 ; 0x110 | ||
+ | 170: ebfffffe bl 0x170 170: ebfffffe bl 0x170 | ||
+ | 174: e3003000 movw r3, #0 174: e3003000 movw r3, #0 | ||
+ | 178: e3403000 movt r3, #0 178: e3403000 movt r3, #0 | ||
+ | 17c: e284c008 add ip, r4, #8 17c: e284e008 add lr, r4, #8 | ||
+ | 180: e893000f ldm r3, {r0, r1, r2, r3} 180: e893000f ldm r3, {r0, r1, r2, r3} | ||
+ | 184: e284ee11 add lr, r4, #272 ; 0x110 184: e1a0c00e mov ip, lr | ||
+ | 188: e584eb30 str lr, [r4, #2864] ; 0xb30 188: e5847b30 str r7, [r4, #2864] ; 0xb30 | ||
+ | 18c: e88c000f stm ip, {r0, r1, r2, r3} 18c: e3a06001 mov r6, #1 | ||
+ | 190: e3002000 movw r2, #0 190: e8ac0007 stmia ip!, {r0, r1, r2} | ||
+ | 194: e1a0300c mov r3, ip 194: e3002000 movw r2, #0 | ||
+ | 198: e3402000 movt r2, #0 198: e1cc30b0 strh r3, [ip] | ||
+ | 19c: e3a0104f mov r1, #79 ; 0x4f 19c: e3402000 movt r2, #0 | ||
+ | 1a0: e2840030 add r0, r4, #48 ; 0x30 1a0: e1a0300e mov r3, lr | ||
+ | 1a4: e58d6000 str r6, [sp] 1a4: e3a0104f mov r1, #79 ; 0x4f | ||
+ | 1a8: ebfffffe bl 0x1a8 1a8: e2840030 add r0, r4, #48 ; 0x30 | ||
+ | 1ac: e5940b30 ldr r0, [r4, #2864] ; 0xb30 1ac: e58d6000 str r6, [sp] | ||
+ | 1b0: e3001000 movw r1, #0 1b0: ebfffffe bl 0x1b0 | ||
+ | 1b4: e1a02006 mov r2, r6 1b4: e5940b30 ldr r0, [r4, #2864] ; 0xb30 | ||
+ | 1b8: e3401000 movt r1, #0 1b8: e3001000 movw r1, #0 | ||
+ | 1bc: e3a03000 mov r3, #0 1bc: e1a02006 mov r2, r6 | ||
+ | 1c0: e2800018 add r0, r0, #24 1c0: e3401000 movt r1, #0 | ||
+ | 1c4: ebfffffe bl 0x1c4 1c4: e3a03000 mov r3, #0 | ||
+ | 1c8: e5941000 ldr r1, [r4] 1c8: e2800018 add r0, r0, #24 | ||
+ | 1cc: e1a03004 mov r3, r4 1cc: ebfffffe bl 0x1cc | ||
+ | 1d0: e3002000 movw r2, #0 1d0: e5941000 ldr r1, [r4] | ||
+ | 1d4: e3402000 movt r2, #0 1d4: e1a03004 mov r3, r4 | ||
+ | 1d8: e3a00000 mov r0, #0 1d8: e3002000 movw r2, #0 | ||
+ | 1dc: e5812014 str r2, [r1, #20] 1dc: e3402000 movt r2, #0 | ||
+ | 1e0: e3a0e00b mov lr, #11 1e0: e3a0c000 mov ip, #0 | ||
+ | 1e4: e5b3cb30 ldr ip, [r3, #2864]! ; 0xb30 1e4: e5812014 str r2, [r1, #20] | ||
+ | 1e8: e1a01000 mov r1, r0 1e8: e2840f41 add r0, r4, #260 ; 0x104 | ||
+ | 1ec: e59f211c ldr r2, [pc, #284] ; 0x310 1ec: e5b3eb30 ldr lr, [r3, #2864]! ; 0xb30 | ||
+ | 1f0: e58c6044 str r6, [ip, #68] ; 0x44 1f0: e1a0100c mov r1, ip | ||
+ | 1f4: e594cb30 ldr ip, [r4, #2864] ; 0xb30 1f4: e59f2114 ldr r2, [pc, #276] ; 0x310 | ||
+ | 1f8: e58430e0 str r3, [r4, #224] ; 0xe0 1f8: e58e6044 str r6, [lr, #68] ; 0x44 | ||
+ | 1fc: e58400a0 str r0, [r4, #160] ; 0xa0 1fc: e594eb30 ldr lr, [r4, #2864] ; 0xb30 | ||
+ | 200: e2840f41 add r0, r4, #260 ; 0x104 200: e58430e0 str r3, [r4, #224] ; 0xe0 | ||
+ | 204: e5846084 str r6, [r4, #132] ; 0x84 204: e5846084 str r6, [r4, #132] ; 0x84 | ||
+ | 208: e584e080 str lr, [r4, #128] ; 0x80 208: e584c0a0 str ip, [r4, #160] ; 0xa0 | ||
+ | 20c: e58c40c4 str r4, [ip, #196] ; 0xc4 20c: e58e40c4 str r4, [lr, #196] ; 0xc4 | ||
+ | 210: e5943000 ldr r3, [r4] 210: e5943000 ldr r3, [r4] | ||
+ | 214: e58420e4 str r2, [r4, #228] ; 0xe4 214: e58420e4 str r2, [r4, #228] ; 0xe4 | ||
+ | 218: e5932004 ldr r2, [r3, #4] 218: e5932004 ldr r2, [r3, #4] | ||
+ | 21c: e5830004 str r0, [r3, #4] 21c: e5830004 str r0, [r3, #4] | ||
+ | 220: e5843104 str r3, [r4, #260] ; 0x104 220: e5843104 str r3, [r4, #260] ; 0x104 | ||
+ | 224: e5842108 str r2, [r4, #264] ; 0x108 224: e5842108 str r2, [r4, #264] ; 0x108 | ||
+ | 228: e5820000 str r0, [r2] 228: e5820000 str r0, [r2] | ||
+ | 22c: e5940000 ldr r0, [r4] 22c: e5940000 ldr r0, [r4] | ||
+ | 230: ebfffffe bl 0x230 230: ebfffffe bl 0x230 | ||
+ | 234: e2507000 subs r7, r0, #0 234: e2507000 subs r7, r0, #0 | ||
+ | 238: 0a000010 beq 0x280 238: 0a000010 beq 0x280 | ||
+ | 23c: e1a04007 mov r4, r7 23c: e1a04007 mov r4, r7 | ||
+ | 240: e3000000 movw r0, #0 240: e3000000 movw r0, #0 | ||
+ | 244: e1a01004 mov r1, r4 244: e1a01004 mov r1, r4 | ||
+ | 248: e3400000 movt r0, #0 248: e3400000 movt r0, #0 | ||
+ | 24c: ebfffffe bl 0x24c 24c: ebfffffe bl 0x24c | ||
+ | 250: e5950000 ldr r0, [r5] 250: e5950000 ldr r0, [r5] | ||
+ | 254: ebfffffe bl 0x254 254: ebfffffe bl 0x254 | ||
+ | 258: e1a00004 mov r0, r4 258: e1a00004 mov r0, r4 | ||
+ | 25c: e28dd014 add sp, sp, #20 25c: e28dd014 add sp, sp, #20 | ||
+ | 260: e8bd83f0 pop {r4, r5, r6, r7, r8, r9, pc} 260: e8bd83f0 pop {r4, r5, r6, r7, r8, r9, pc} | ||
+ | 264: e3e0400b mvn r4, #11 264: e3e0400b mvn r4, #11 | ||
+ | 268: eafffff4 b 0x240 268: eafffff4 b 0x240 | ||
+ | 26c: e3000000 movw r0, #0 26c: e3000000 movw r0, #0 | ||
+ | 270: e3e0400b mvn r4, #11 270: e3e0400b mvn r4, #11 | ||
+ | 274: e3400000 movt r0, #0 274: e3400000 movt r0, #0 | ||
+ | 278: ebfffffe bl 0x278 278: ebfffffe bl 0x278 | ||
+ | 27c: eafffff5 b 0x258 27c: eafffff5 b 0x258 | ||
+ | 280: e3000000 movw r0, #0 280: e3000000 movw r0, #0 | ||
+ | 284: e3a08000 mov r8, #0 284: e3a08000 mov r8, #0 | ||
+ | 288: e3400000 movt r0, #0 288: e3400000 movt r0, #0 | ||
+ | 28c: e3a09000 mov r9, #0 28c: e3a09000 mov r9, #0 | ||
+ | 290: ebfffffe bl 0x290 290: ebfffffe bl 0x290 | ||
+ | 294: e1a01006 mov r1, r6 294: e1a01006 mov r1, r6 | ||
+ | 298: e1a02006 mov r2, r6 298: e1a02006 mov r2, r6 | ||
+ | 29c: e2850008 add r0, r5, #8 29c: e2850008 add r0, r5, #8 | ||
+ | 2a0: ebfffffe bl 0x2a0 2a0: ebfffffe bl 0x2a0 | ||
+ | 2a4: e3000000 movw r0, #0 2a4: e3000000 movw r0, #0 | ||
+ | 2a8: e3400000 movt r0, #0 2a8: e3400000 movt r0, #0 | ||
+ | 2ac: ebfffffe bl 0x2ac 2ac: ebfffffe bl 0x2ac | ||
+ | 2b0: e3000000 movw r0, #0 2b0: e3000000 movw r0, #0 | ||
+ | 2b4: e3003000 movw r3, #0 2b4: e3003000 movw r3, #0 | ||
+ | 2b8: e3400000 movt r0, #0 2b8: e3400000 movt r0, #0 | ||
+ | 2bc: e3403000 movt r3, #0 2bc: e3403000 movt r3, #0 | ||
+ | 2c0: e5853028 str r3, [r5, #40] ; 0x28 2c0: e5853028 str r3, [r5, #40] ; 0x28 | ||
+ | 2c4: ebfffffe bl 0x2c4 2c4: ebfffffe bl 0x2c4 | ||
+ | 2c8: e3042240 movw r2, #16960 ; 0x4240 2c8: e3042240 movw r2, #16960 ; 0x4240 | ||
+ | 2cc: e340200f movt r2, #15 2cc: e340200f movt r2, #15 | ||
+ | 2d0: e3a03000 mov r3, #0 2d0: e3a03000 mov r3, #0 | ||
+ | 2d4: e2850008 add r0, r5, #8 2d4: e2850008 add r0, r5, #8 | ||
+ | 2d8: e58d6008 str r6, [sp, #8] 2d8: e58d6008 str r6, [sp, #8] | ||
+ | 2dc: e1cd80f0 strd r8, [sp] 2dc: e1cd80f0 strd r8, [sp] | ||
+ | 2e0: ebfffffe bl 0x2e0 2e0: ebfffffe bl 0x2e0 | ||
+ | 2e4: e3000000 movw r0, #0 2e4: e3000000 movw r0, #0 | ||
+ | 2e8: e3400000 movt r0, #0 2e8: e3400000 movt r0, #0 | ||
+ | 2ec: ebfffffe bl 0x2ec 2ec: ebfffffe bl 0x2ec | ||
+ | 2f0: e5954038 ldr r4, [r5, #56] ; 0x38 2f0: e5954038 ldr r4, [r5, #56] ; 0x38 | ||
+ | 2f4: e3540000 cmp r4, #0 2f4: e3540000 cmp r4, #0 | ||
+ | 2f8: 0affffd6 beq 0x258 2f8: 0affffd6 beq 0x258 | ||
+ | 2fc: e3000000 movw r0, #0 2fc: e3000000 movw r0, #0 | ||
+ | 300: e1a04007 mov r4, r7 300: e1a04007 mov r4, r7 | ||
+ | 304: e3400000 movt r0, #0 304: e3400000 movt r0, #0 | ||
+ | 308: ebfffffe bl 0x308 308: ebfffffe bl 0x308 | ||
+ | 30c: eaffffd1 b 0x258 30c: eaffffd1 b 0x258 | ||
+ | 310: 00000014 andeq r0, r0, r4, lsl r0 310: 00000014 andeq r0, r0, r4, lsl r0 | ||
+ | 314: e92d4010 push {r4, lr} 314: e92d4010 push {r4, lr} | ||
+ | 318: e3004000 movw r4, #0 318: e3004000 movw r4, #0 | ||
+ | 31c: e3404000 movt r4, #0 31c: e3404000 movt r4, #0 | ||
+ | 320: e2840008 add r0, r4, #8 320: e2840008 add r0, r4, #8 | ||
+ | 324: ebfffffe bl 0x324 324: ebfffffe bl 0x324 | ||
+ | 328: e5943000 ldr r3, [r4] 328: e5943000 ldr r3, [r4] | ||
+ | 32c: e5930000 ldr r0, [r3] 32c: e5930000 ldr r0, [r3] | ||
+ | 330: ebfffffe bl 0x330 330: ebfffffe bl 0x330 | ||
+ | 334: e5943000 ldr r3, [r4] 334: e5943000 ldr r3, [r4] | ||
+ | 338: e5930000 ldr r0, [r3] 338: e5930000 ldr r0, [r3] | ||
+ | 33c: ebfffffe bl 0x33c 33c: ebfffffe bl 0x33c | ||
+ | 340: e5940000 ldr r0, [r4] 340: e5940000 ldr r0, [r4] | ||
+ | 344: ebfffffe bl 0x344 344: ebfffffe bl 0x344 | ||
+ | 348: e5943038 ldr r3, [r4, #56] ; 0x38 348: e5943038 ldr r3, [r4, #56] ; 0x38 | ||
+ | 34c: e3530000 cmp r3, #0 34c: e3530000 cmp r3, #0 | ||
+ | 350: 08bd8010 popeq {r4, pc} 350: 08bd8010 popeq {r4, pc} | ||
+ | 354: e3000000 movw r0, #0 354: e3000000 movw r0, #0 | ||
+ | 358: e3400000 movt r0, #0 358: e3400000 movt r0, #0 | ||
+ | 35c: e8bd4010 pop {r4, lr} 35c: e8bd4010 pop {r4, lr} | ||
+ | 360: eafffffe b 0x360 360: eafffffe b 0x360 | ||
+ | |||
+ | = First email about this from september 2019 = | ||
+ | |||
+ | It looks like John David has renamed dummy to hrtimer, dummy is designed to | ||
+ | provide good timing on systems lacking dahdi hardware. I've attached strings | ||
+ | of his module and the dummy one I built today, they are virtually identical. | ||
+ | |||
+ | Please test this if you have asl1.01 on a rpi. | ||
+ | |||
+ | Simply building this seems to fix any studering on asl 1.01 running on a RPi3: | ||
+ | |||
+ | bryan@StPeteRpt:~ $ sudo dahdi_test | ||
+ | [sudo] password for bryan: | ||
+ | Opened pseudo dahdi interface, measuring accuracy... | ||
+ | 99.614% 99.594% 99.608% 99.608% 98.476% 99.638% 99.599% 99.601% | ||
+ | 99.600% 98.450% 99.602% 99.600% 99.601% 99.600% 98.445% 99.581% | ||
+ | 99.621% 99.605% 99.597% 98.478% 99.630% 99.579% 99.626% 99.601% | ||
+ | 98.478% 99.630% 99.602% 99.600% 99.601% 98.446% 99.601% 99.580% ^C | ||
+ | --- Results after 32 passes --- | ||
+ | Best: 99.638% -- Worst: 98.445% -- Average: 99.390271% | ||
+ | Cumulative Accuracy (not per pass): 99.967 | ||
+ | |||
+ | After insmod of dummy module. | ||
+ | |||
+ | bryan@StPeteRpt:~ $ sudo dahdi_test | ||
+ | Opened pseudo dahdi interface, measuring accuracy... | ||
+ | 99.990% 99.967% 99.991% 99.992% 99.991% 99.992% 99.991% 99.991% | ||
+ | 99.991% 99.988% 99.992% 99.991% 99.991% 99.992% 99.991% 99.991% | ||
+ | 99.991% 99.990% 99.992% 99.991% 99.991% 99.991% 99.991% 99.991% | ||
+ | 99.992% 99.991% 99.991% 99.992% 99.991% 99.991% 99.991% 99.991% | ||
+ | 99.991% 99.990% 99.991% 99.992% 99.991% 99.991% 99.991% 99.991% ^C | ||
+ | --- Results after 40 passes --- | ||
+ | Best: 99.992% -- Worst: 99.967% -- Average: 99.990443% | ||
+ | Cumulative Accuracy (not per pass): 99.990 | ||
+ | |||
+ | Here it is on an intel server running a pci_radio card: | ||
+ | |||
+ | root@Itchy:/home/bryan# dahdi_test | ||
+ | Opened pseudo dahdi interface, measuring accuracy... | ||
+ | 99.993% 99.986% 99.995% 99.992% 99.984% 99.971% 99.993% 99.990% | ||
+ | 99.992% 99.992% 99.991% 99.990% 99.996% 99.990% 99.971% 99.954% | ||
+ | 99.994% 99.992% 99.991% 99.995% 99.983% 99.993% 99.992% 99.992% | ||
+ | 99.997% 99.990% 99.985% 99.995% 99.990% 99.996% 99.989% 99.993% | ||
+ | 99.993% 99.989% 99.997% 99.989% 99.994% 99.996% 99.988% 99.993% ^C | ||
+ | --- Results after 40 passes --- | ||
+ | Best: 99.997% -- Worst: 99.954% -- Average: 99.989596% | ||
+ | Cummulative Accuracy (not per pass): 99.992 | ||
+ | |||
+ | It's identical. | ||
+ | |||
+ | To build as root: | ||
+ | # cd /usr/src/asl-dahdi-linux-2.11.1/linux | ||
+ | # export MODULES_EXTRA='dahdi_dummy' | ||
+ | # make | ||
+ | # insmod /usr/src/asl-dahdi-linux-2.11.1/linux/drivers/dahdi/dahdi_dummy.ko | ||
+ | |||
+ | # lsmod |grep dahdi | ||
+ | dahdi_dummy 3432 0 | ||
+ | dahdi 229561 35 dahdi_dummy | ||
+ | crc_ccitt 1771 1 dahdi | ||
+ | |||
+ | you will need to do dahdi_genconf and then dahdi_cfg. ASL1.01 is missing this | ||
+ | in the service script that starts asterisk. It needs to be added. | ||
+ | Restart asterisk | ||
+ | #service asterisk restart | ||
+ | |||
+ | # dahdi_scan | ||
+ | [1] | ||
+ | active=yes | ||
+ | alarms=UNCONFIGURED | ||
+ | description=DAHDI_DUMMY/1 (source: HRtimer) 1 | ||
+ | name=DAHDI_DUMMY/1 | ||
+ | manufacturer= | ||
+ | devicetype=DAHDI Dummy Timing | ||
+ | location= | ||
+ | basechan=1 | ||
+ | totchans=0 | ||
+ | irq=0 | ||
+ | |||
+ | I'm not on the admin list, so unicast if you have a question. |
Latest revision as of 21:22, 30 December 2019
dahdi_dummy is the timing only dahdi driver for olver versions of asterisk. It's not needed on intel as newer dahdi doesn't need it. On the RPi or ARM platforms it's really useful.
Unfortunately John David McGough, KB4FXC of Internet Technologies, Inc has taken this code, removed the author and renamed it as part of the pirated software known as HamVoIP.
Contents
I've made a video presentation of this on youtube
I don't care, I just want this to work on ASL 1.01!
Ok, here's the skinny on how to make this work on an ASL 1.01 system.
- ensure your system is up and going, with the kernel pinned per the readme
- apt-mark hold raspberrypi-kernel-headers raspberrypi-kernel
- apt-get install gcc raspberrypi-kernel-headers make vim git
- vim /usr/src/asl-dahdi-linux-2.11.1/linux/drivers/dahdi/Kbuild remove the # from the dummy file
- cd /usr/src/asl-dahdi-linux-2.11.1
- make
- make install
- echo -e "#needed for rpi timing \ndahdi_dummy" >>/etc/modules # add it to modules.conf
- modprobe dahdi_dummy
- service restart asterisk
Verify :
StPeteRpt*CLI> dahdi show status Description Alarms IRQ bpviol CRC4 DAHDI_DUMMY/1 (source: HRtimer) 1 UNCONFIGUR 0 0 0
Support Files about this
My presentation slides as presented on youtube
compare of the ASM code between the two drivers
dahdi_hrtimer.ko-stripped: file format elf32-littlearm dahdi_dummy.ko-stripped: file format elf32-littlearm Disassembly of section .text: Disassembly of section .text: 00000000 <.text>: 00000000 <.text>: 0: e92d40f0 push {r4, r5, r6, r7, lr} 0: e92d40f0 push {r4, r5, r6, r7, lr} 4: e3004000 movw r4, #0 4: e3004000 movw r4, #0 8: e3404000 movt r4, #0 8: e3404000 movt r4, #0 c: e1a06000 mov r6, r0 c: e1a06000 mov r6, r0 10: e5940000 ldr r0, [r4] 10: e5940000 ldr r0, [r4] 14: e24dd00c sub sp, sp, #12 14: e24dd00c sub sp, sp, #12 18: e2800004 add r0, r0, #4 18: e2800004 add r0, r0, #4 1c: e10f5000 mrs r5, CPSR 1c: e10f5000 mrs r5, CPSR 20: f10c0080 cpsid i 20: f10c0080 cpsid i 24: ebfffffe bl 0x24 24: ebfffffe bl 0x24 28: e3c55040 bic r5, r5, #64 ; 0x40 28: e3c55040 bic r5, r5, #64 ; 0x40 2c: e10f3000 mrs r3, CPSR 2c: e10f3000 mrs r3, CPSR 30: e2033040 and r3, r3, #64 ; 0x40 30: e2033040 and r3, r3, #64 ; 0x40 34: e1835005 orr r5, r3, r5 34: e1835005 orr r5, r3, r5 38: e121f005 msr CPSR_c, r5 38: e121f005 msr CPSR_c, r5 3c: e5940000 ldr r0, [r4] 3c: e5940000 ldr r0, [r4] 40: e2800004 add r0, r0, #4 40: e2800004 add r0, r0, #4 44: e10f5000 mrs r5, CPSR 44: e10f5000 mrs r5, CPSR 48: f10c0080 cpsid i 48: f10c0080 cpsid i 4c: ebfffffe bl 0x4c 4c: ebfffffe bl 0x4c 50: e3c55040 bic r5, r5, #64 ; 0x40 50: e3c55040 bic r5, r5, #64 ; 0x40 54: e10f3000 mrs r3, CPSR 54: e10f3000 mrs r3, CPSR 58: e2033040 and r3, r3, #64 ; 0x40 58: e2033040 and r3, r3, #64 ; 0x40 5c: e1835005 orr r5, r3, r5 5c: e1835005 orr r5, r3, r5 60: e121f005 msr CPSR_c, r5 60: e121f005 msr CPSR_c, r5 64: e1c621d0 ldrd r2, [r6, #16] 64: e1c621d0 ldrd r2, [r6, #16] 68: e3046240 movw r6, #16960 ; 0x4240 68: e3046240 movw r6, #16960 ; 0x4240 6c: e340600f movt r6, #15 6c: e340600f movt r6, #15 70: e3a07000 mov r7, #0 70: e3a07000 mov r7, #0 74: e2840008 add r0, r4, #8 74: e2840008 add r0, r4, #8 78: e1cd60f0 strd r6, [sp] 78: e1cd60f0 strd r6, [sp] 7c: ebfffffe bl 0x7c 7c: ebfffffe bl 0x7c 80: e3500001 cmp r0, #1 80: e3500001 cmp r0, #1 84: 9a000005 bls 0xa0 84: 9a000005 bls 0xa0 88: e1a05000 mov r5, r0 88: e1a05000 mov r5, r0 8c: e3000000 movw r0, #0 8c: e3000000 movw r0, #0 90: e3400000 movt r0, #0 90: e3400000 movt r0, #0 94: ebfffffe bl 0x94 94: ebfffffe bl 0x94 98: e3500000 cmp r0, #0 98: e3500000 cmp r0, #0 9c: 1a000017 bne 0x100 9c: 1a000013 bne 0xf0 a0: e5943038 ldr r3, [r4, #56] ; 0x38 a0: e5942038 ldr r2, [r4, #56] ; 0x38 a4: e3002000 movw r2, #0 a4: e3003000 movw r3, #0 a8: e3402000 movt r2, #0 a8: e3403000 movt r3, #0 ac: e3530001 cmp r3, #1 ac: e3520000 cmp r2, #0 b0: da00000b ble 0xe4 b0: 0a00000b beq 0xe4 b4: e592303c ldr r3, [r2, #60] ; 0x3c b4: e593103c ldr r1, [r3, #60] ; 0x3c b8: e3080bad movw r0, #35757 ; 0x8bad b8: e3082bad movw r2, #35757 ; 0x8bad bc: e34608db movt r0, #26843 ; 0x68db bc: e34628db movt r2, #26843 ; 0x68db c0: e301c388 movw ip, #5000 ; 0x1388 c0: e3010388 movw r0, #5000 ; 0x1388 c4: e2831001 add r1, r3, #1 c4: e281c001 add ip, r1, #1 c8: e582103c str r1, [r2, #60] ; 0x3c c8: e583c03c str ip, [r3, #60] ; 0x3c cc: e0c10093 smull r0, r1, r3, r0 cc: e0c32291 smull r2, r3, r1, r2 d0: e1a02fc3 asr r2, r3, #31 d0: e1a02fc1 asr r2, r1, #31 d4: e06225c1 rsb r2, r2, r1, asr #11 d4: e06225c3 rsb r2, r2, r3, asr #11 d8: e063329c mls r3, ip, r2, r3 d8: e0631290 mls r3, r0, r2, r1 dc: e3530000 cmp r3, #0 dc: e3530000 cmp r3, #0 e0: 0a000002 beq 0xf0 e0: 0a000007 beq 0x104 e4: e3a00001 mov r0, #1 e4: e3a00001 mov r0, #1 e8: e28dd00c add sp, sp, #12 e8: e28dd00c add sp, sp, #12 ec: e8bd80f0 pop {r4, r5, r6, r7, pc} ec: e8bd80f0 pop {r4, r5, r6, r7, pc} f0: e3000000 movw r0, #0 f0: e3000000 movw r0, #0 f4: e3400000 movt r0, #0 f4: e2451001 sub r1, r5, #1 f8: ebfffffe bl 0xf8 f8: e3400000 movt r0, #0 fc: eafffff8 b 0xe4 fc: ebfffffe bl 0xfc 100: e3000000 movw r0, #0 100: eaffffe6 b 0xa0 104: e2451001 sub r1, r5, #1 104: e3000000 movw r0, #0 108: e3400000 movt r0, #0 108: e3400000 movt r0, #0 10c: ebfffffe bl 0x10c 10c: ebfffffe bl 0x10c 110: eaffffe2 b 0xa0 110: eafffff3 b 0xe4 114: e3003000 movw r3, #0 114: e3003000 movw r3, #0 118: e30810c0 movw r1, #32960 ; 0x80c0 118: e30810c0 movw r1, #32960 ; 0x80c0 11c: e3403000 movt r3, #0 11c: e3403000 movt r3, #0 120: e3401060 movt r1, #96 ; 0x60 120: e3401060 movt r1, #96 ; 0x60 124: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} 124: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} 128: e3002b38 movw r2, #2872 ; 0xb38 128: e3002b38 movw r2, #2872 ; 0xb38 12c: e24dd014 sub sp, sp, #20 12c: e24dd014 sub sp, sp, #20 130: e5930030 ldr r0, [r3, #48] ; 0x30 130: e5930030 ldr r0, [r3, #48] ; 0x30 134: ebfffffe bl 0x134 134: ebfffffe bl 0x134 138: e3005000 movw r5, #0 138: e3005000 movw r5, #0 13c: e3405000 movt r5, #0 13c: e3405000 movt r5, #0 140: e3500000 cmp r0, #0 140: e3500000 cmp r0, #0 144: e5850000 str r0, [r5] 144: e5850000 str r0, [r5] 148: 0a000047 beq 0x26c 148: 0a000047 beq 0x26c 14c: e1a04000 mov r4, r0 14c: e1a04000 mov r4, r0 150: ebfffffe bl 0x150 150: ebfffffe bl 0x150 154: e3500000 cmp r0, #0 154: e3500000 cmp r0, #0 158: e5840000 str r0, [r4] 158: e5840000 str r0, [r4] 15c: 0a000040 beq 0x264 15c: 0a000040 beq 0x264 160: e3001000 movw r1, #0 160: e3001000 movw r1, #0 164: e2800018 add r0, r0, #24 164: e2800018 add r0, r0, #24 168: e3401000 movt r1, #0 168: e3401000 movt r1, #0 16c: e3a06001 mov r6, #1 16c: e2847e11 add r7, r4, #272 ; 0x110 170: ebfffffe bl 0x170 170: ebfffffe bl 0x170 174: e3003000 movw r3, #0 174: e3003000 movw r3, #0 178: e3403000 movt r3, #0 178: e3403000 movt r3, #0 17c: e284c008 add ip, r4, #8 17c: e284e008 add lr, r4, #8 180: e893000f ldm r3, {r0, r1, r2, r3} 180: e893000f ldm r3, {r0, r1, r2, r3} 184: e284ee11 add lr, r4, #272 ; 0x110 184: e1a0c00e mov ip, lr 188: e584eb30 str lr, [r4, #2864] ; 0xb30 188: e5847b30 str r7, [r4, #2864] ; 0xb30 18c: e88c000f stm ip, {r0, r1, r2, r3} 18c: e3a06001 mov r6, #1 190: e3002000 movw r2, #0 190: e8ac0007 stmia ip!, {r0, r1, r2} 194: e1a0300c mov r3, ip 194: e3002000 movw r2, #0 198: e3402000 movt r2, #0 198: e1cc30b0 strh r3, [ip] 19c: e3a0104f mov r1, #79 ; 0x4f 19c: e3402000 movt r2, #0 1a0: e2840030 add r0, r4, #48 ; 0x30 1a0: e1a0300e mov r3, lr 1a4: e58d6000 str r6, [sp] 1a4: e3a0104f mov r1, #79 ; 0x4f 1a8: ebfffffe bl 0x1a8 1a8: e2840030 add r0, r4, #48 ; 0x30 1ac: e5940b30 ldr r0, [r4, #2864] ; 0xb30 1ac: e58d6000 str r6, [sp] 1b0: e3001000 movw r1, #0 1b0: ebfffffe bl 0x1b0 1b4: e1a02006 mov r2, r6 1b4: e5940b30 ldr r0, [r4, #2864] ; 0xb30 1b8: e3401000 movt r1, #0 1b8: e3001000 movw r1, #0 1bc: e3a03000 mov r3, #0 1bc: e1a02006 mov r2, r6 1c0: e2800018 add r0, r0, #24 1c0: e3401000 movt r1, #0 1c4: ebfffffe bl 0x1c4 1c4: e3a03000 mov r3, #0 1c8: e5941000 ldr r1, [r4] 1c8: e2800018 add r0, r0, #24 1cc: e1a03004 mov r3, r4 1cc: ebfffffe bl 0x1cc 1d0: e3002000 movw r2, #0 1d0: e5941000 ldr r1, [r4] 1d4: e3402000 movt r2, #0 1d4: e1a03004 mov r3, r4 1d8: e3a00000 mov r0, #0 1d8: e3002000 movw r2, #0 1dc: e5812014 str r2, [r1, #20] 1dc: e3402000 movt r2, #0 1e0: e3a0e00b mov lr, #11 1e0: e3a0c000 mov ip, #0 1e4: e5b3cb30 ldr ip, [r3, #2864]! ; 0xb30 1e4: e5812014 str r2, [r1, #20] 1e8: e1a01000 mov r1, r0 1e8: e2840f41 add r0, r4, #260 ; 0x104 1ec: e59f211c ldr r2, [pc, #284] ; 0x310 1ec: e5b3eb30 ldr lr, [r3, #2864]! ; 0xb30 1f0: e58c6044 str r6, [ip, #68] ; 0x44 1f0: e1a0100c mov r1, ip 1f4: e594cb30 ldr ip, [r4, #2864] ; 0xb30 1f4: e59f2114 ldr r2, [pc, #276] ; 0x310 1f8: e58430e0 str r3, [r4, #224] ; 0xe0 1f8: e58e6044 str r6, [lr, #68] ; 0x44 1fc: e58400a0 str r0, [r4, #160] ; 0xa0 1fc: e594eb30 ldr lr, [r4, #2864] ; 0xb30 200: e2840f41 add r0, r4, #260 ; 0x104 200: e58430e0 str r3, [r4, #224] ; 0xe0 204: e5846084 str r6, [r4, #132] ; 0x84 204: e5846084 str r6, [r4, #132] ; 0x84 208: e584e080 str lr, [r4, #128] ; 0x80 208: e584c0a0 str ip, [r4, #160] ; 0xa0 20c: e58c40c4 str r4, [ip, #196] ; 0xc4 20c: e58e40c4 str r4, [lr, #196] ; 0xc4 210: e5943000 ldr r3, [r4] 210: e5943000 ldr r3, [r4] 214: e58420e4 str r2, [r4, #228] ; 0xe4 214: e58420e4 str r2, [r4, #228] ; 0xe4 218: e5932004 ldr r2, [r3, #4] 218: e5932004 ldr r2, [r3, #4] 21c: e5830004 str r0, [r3, #4] 21c: e5830004 str r0, [r3, #4] 220: e5843104 str r3, [r4, #260] ; 0x104 220: e5843104 str r3, [r4, #260] ; 0x104 224: e5842108 str r2, [r4, #264] ; 0x108 224: e5842108 str r2, [r4, #264] ; 0x108 228: e5820000 str r0, [r2] 228: e5820000 str r0, [r2] 22c: e5940000 ldr r0, [r4] 22c: e5940000 ldr r0, [r4] 230: ebfffffe bl 0x230 230: ebfffffe bl 0x230 234: e2507000 subs r7, r0, #0 234: e2507000 subs r7, r0, #0 238: 0a000010 beq 0x280 238: 0a000010 beq 0x280 23c: e1a04007 mov r4, r7 23c: e1a04007 mov r4, r7 240: e3000000 movw r0, #0 240: e3000000 movw r0, #0 244: e1a01004 mov r1, r4 244: e1a01004 mov r1, r4 248: e3400000 movt r0, #0 248: e3400000 movt r0, #0 24c: ebfffffe bl 0x24c 24c: ebfffffe bl 0x24c 250: e5950000 ldr r0, [r5] 250: e5950000 ldr r0, [r5] 254: ebfffffe bl 0x254 254: ebfffffe bl 0x254 258: e1a00004 mov r0, r4 258: e1a00004 mov r0, r4 25c: e28dd014 add sp, sp, #20 25c: e28dd014 add sp, sp, #20 260: e8bd83f0 pop {r4, r5, r6, r7, r8, r9, pc} 260: e8bd83f0 pop {r4, r5, r6, r7, r8, r9, pc} 264: e3e0400b mvn r4, #11 264: e3e0400b mvn r4, #11 268: eafffff4 b 0x240 268: eafffff4 b 0x240 26c: e3000000 movw r0, #0 26c: e3000000 movw r0, #0 270: e3e0400b mvn r4, #11 270: e3e0400b mvn r4, #11 274: e3400000 movt r0, #0 274: e3400000 movt r0, #0 278: ebfffffe bl 0x278 278: ebfffffe bl 0x278 27c: eafffff5 b 0x258 27c: eafffff5 b 0x258 280: e3000000 movw r0, #0 280: e3000000 movw r0, #0 284: e3a08000 mov r8, #0 284: e3a08000 mov r8, #0 288: e3400000 movt r0, #0 288: e3400000 movt r0, #0 28c: e3a09000 mov r9, #0 28c: e3a09000 mov r9, #0 290: ebfffffe bl 0x290 290: ebfffffe bl 0x290 294: e1a01006 mov r1, r6 294: e1a01006 mov r1, r6 298: e1a02006 mov r2, r6 298: e1a02006 mov r2, r6 29c: e2850008 add r0, r5, #8 29c: e2850008 add r0, r5, #8 2a0: ebfffffe bl 0x2a0 2a0: ebfffffe bl 0x2a0 2a4: e3000000 movw r0, #0 2a4: e3000000 movw r0, #0 2a8: e3400000 movt r0, #0 2a8: e3400000 movt r0, #0 2ac: ebfffffe bl 0x2ac 2ac: ebfffffe bl 0x2ac 2b0: e3000000 movw r0, #0 2b0: e3000000 movw r0, #0 2b4: e3003000 movw r3, #0 2b4: e3003000 movw r3, #0 2b8: e3400000 movt r0, #0 2b8: e3400000 movt r0, #0 2bc: e3403000 movt r3, #0 2bc: e3403000 movt r3, #0 2c0: e5853028 str r3, [r5, #40] ; 0x28 2c0: e5853028 str r3, [r5, #40] ; 0x28 2c4: ebfffffe bl 0x2c4 2c4: ebfffffe bl 0x2c4 2c8: e3042240 movw r2, #16960 ; 0x4240 2c8: e3042240 movw r2, #16960 ; 0x4240 2cc: e340200f movt r2, #15 2cc: e340200f movt r2, #15 2d0: e3a03000 mov r3, #0 2d0: e3a03000 mov r3, #0 2d4: e2850008 add r0, r5, #8 2d4: e2850008 add r0, r5, #8 2d8: e58d6008 str r6, [sp, #8] 2d8: e58d6008 str r6, [sp, #8] 2dc: e1cd80f0 strd r8, [sp] 2dc: e1cd80f0 strd r8, [sp] 2e0: ebfffffe bl 0x2e0 2e0: ebfffffe bl 0x2e0 2e4: e3000000 movw r0, #0 2e4: e3000000 movw r0, #0 2e8: e3400000 movt r0, #0 2e8: e3400000 movt r0, #0 2ec: ebfffffe bl 0x2ec 2ec: ebfffffe bl 0x2ec 2f0: e5954038 ldr r4, [r5, #56] ; 0x38 2f0: e5954038 ldr r4, [r5, #56] ; 0x38 2f4: e3540000 cmp r4, #0 2f4: e3540000 cmp r4, #0 2f8: 0affffd6 beq 0x258 2f8: 0affffd6 beq 0x258 2fc: e3000000 movw r0, #0 2fc: e3000000 movw r0, #0 300: e1a04007 mov r4, r7 300: e1a04007 mov r4, r7 304: e3400000 movt r0, #0 304: e3400000 movt r0, #0 308: ebfffffe bl 0x308 308: ebfffffe bl 0x308 30c: eaffffd1 b 0x258 30c: eaffffd1 b 0x258 310: 00000014 andeq r0, r0, r4, lsl r0 310: 00000014 andeq r0, r0, r4, lsl r0 314: e92d4010 push {r4, lr} 314: e92d4010 push {r4, lr} 318: e3004000 movw r4, #0 318: e3004000 movw r4, #0 31c: e3404000 movt r4, #0 31c: e3404000 movt r4, #0 320: e2840008 add r0, r4, #8 320: e2840008 add r0, r4, #8 324: ebfffffe bl 0x324 324: ebfffffe bl 0x324 328: e5943000 ldr r3, [r4] 328: e5943000 ldr r3, [r4] 32c: e5930000 ldr r0, [r3] 32c: e5930000 ldr r0, [r3] 330: ebfffffe bl 0x330 330: ebfffffe bl 0x330 334: e5943000 ldr r3, [r4] 334: e5943000 ldr r3, [r4] 338: e5930000 ldr r0, [r3] 338: e5930000 ldr r0, [r3] 33c: ebfffffe bl 0x33c 33c: ebfffffe bl 0x33c 340: e5940000 ldr r0, [r4] 340: e5940000 ldr r0, [r4] 344: ebfffffe bl 0x344 344: ebfffffe bl 0x344 348: e5943038 ldr r3, [r4, #56] ; 0x38 348: e5943038 ldr r3, [r4, #56] ; 0x38 34c: e3530000 cmp r3, #0 34c: e3530000 cmp r3, #0 350: 08bd8010 popeq {r4, pc} 350: 08bd8010 popeq {r4, pc} 354: e3000000 movw r0, #0 354: e3000000 movw r0, #0 358: e3400000 movt r0, #0 358: e3400000 movt r0, #0 35c: e8bd4010 pop {r4, lr} 35c: e8bd4010 pop {r4, lr} 360: eafffffe b 0x360 360: eafffffe b 0x360
First email about this from september 2019
It looks like John David has renamed dummy to hrtimer, dummy is designed to provide good timing on systems lacking dahdi hardware. I've attached strings of his module and the dummy one I built today, they are virtually identical. Please test this if you have asl1.01 on a rpi. Simply building this seems to fix any studering on asl 1.01 running on a RPi3: bryan@StPeteRpt:~ $ sudo dahdi_test [sudo] password for bryan: Opened pseudo dahdi interface, measuring accuracy... 99.614% 99.594% 99.608% 99.608% 98.476% 99.638% 99.599% 99.601% 99.600% 98.450% 99.602% 99.600% 99.601% 99.600% 98.445% 99.581% 99.621% 99.605% 99.597% 98.478% 99.630% 99.579% 99.626% 99.601% 98.478% 99.630% 99.602% 99.600% 99.601% 98.446% 99.601% 99.580% ^C --- Results after 32 passes --- Best: 99.638% -- Worst: 98.445% -- Average: 99.390271% Cumulative Accuracy (not per pass): 99.967 After insmod of dummy module. bryan@StPeteRpt:~ $ sudo dahdi_test Opened pseudo dahdi interface, measuring accuracy... 99.990% 99.967% 99.991% 99.992% 99.991% 99.992% 99.991% 99.991% 99.991% 99.988% 99.992% 99.991% 99.991% 99.992% 99.991% 99.991% 99.991% 99.990% 99.992% 99.991% 99.991% 99.991% 99.991% 99.991% 99.992% 99.991% 99.991% 99.992% 99.991% 99.991% 99.991% 99.991% 99.991% 99.990% 99.991% 99.992% 99.991% 99.991% 99.991% 99.991% ^C --- Results after 40 passes --- Best: 99.992% -- Worst: 99.967% -- Average: 99.990443% Cumulative Accuracy (not per pass): 99.990 Here it is on an intel server running a pci_radio card: root@Itchy:/home/bryan# dahdi_test Opened pseudo dahdi interface, measuring accuracy... 99.993% 99.986% 99.995% 99.992% 99.984% 99.971% 99.993% 99.990% 99.992% 99.992% 99.991% 99.990% 99.996% 99.990% 99.971% 99.954% 99.994% 99.992% 99.991% 99.995% 99.983% 99.993% 99.992% 99.992% 99.997% 99.990% 99.985% 99.995% 99.990% 99.996% 99.989% 99.993% 99.993% 99.989% 99.997% 99.989% 99.994% 99.996% 99.988% 99.993% ^C --- Results after 40 passes --- Best: 99.997% -- Worst: 99.954% -- Average: 99.989596% Cummulative Accuracy (not per pass): 99.992 It's identical. To build as root: # cd /usr/src/asl-dahdi-linux-2.11.1/linux # export MODULES_EXTRA='dahdi_dummy' # make # insmod /usr/src/asl-dahdi-linux-2.11.1/linux/drivers/dahdi/dahdi_dummy.ko # lsmod |grep dahdi dahdi_dummy 3432 0 dahdi 229561 35 dahdi_dummy crc_ccitt 1771 1 dahdi you will need to do dahdi_genconf and then dahdi_cfg. ASL1.01 is missing this in the service script that starts asterisk. It needs to be added. Restart asterisk #service asterisk restart # dahdi_scan [1] active=yes alarms=UNCONFIGURED description=DAHDI_DUMMY/1 (source: HRtimer) 1 name=DAHDI_DUMMY/1 manufacturer= devicetype=DAHDI Dummy Timing location= basechan=1 totchans=0 irq=0 I'm not on the admin list, so unicast if you have a question.