What's new

[Release] FreshJR Adaptive QOS (Improvements / Custom Rules / and Inner workings)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

Status
Not open for further replies.
@Jack Yaz your configuration is working.

@Tekneek, did you modify the script in any way where you could of introduced bugs?
Running current version?

Running current version and I left it stock. As part of my troubleshooting, I uninstalled and reinstalled as well.
 
Here's my RT-AC3100 with a full M&M config after flashing 384.10

Part 1:

ASUSWRT-Merlin RT-AC3100 384.10-0 Sun Mar 24 21:36:18 UTC 2019
admin@RT-AC3100:/tmp/home/root# tc filter show dev br0
filter parent 1: protocol all pref 1 u32
filter parent 1: protocol all pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol all pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:2
mark 0x0000 0xc0000000 (success 92178)
filter parent 1: protocol all pref 2 u32
filter parent 1: protocol all pref 2 u32 fh 82a: ht divisor 1
filter parent 1: protocol all pref 2 u32 fh 82a::800 order 2048 key ht 82a bkt 0 flowid 1:13
mark 0x8000006b 0xc03fffff (success 0)
filter parent 1: protocol all pref 2 u32 fh 82a::801 order 2049 key ht 82a bkt 0 flowid 1:13
mark 0x80000000 0x8000ffff (success 1619)
filter parent 1: protocol all pref 3 u32
filter parent 1: protocol all pref 3 u32 fh 805: ht divisor 1
filter parent 1: protocol all pref 3 u32 fh 805::800 order 2048 key ht 805 bkt 0 flowid 1:11
mark 0x80000000 0xc03f0000 (success 1)
filter parent 1: protocol all pref 4 u32
filter parent 1: protocol all pref 4 u32 fh 824: ht divisor 1
filter parent 1: protocol all pref 4 u32 fh 824::800 order 2048 key ht 824 bkt 0 flowid 1:16
mark 0x80010000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 6 u32
filter parent 1: protocol all pref 6 u32 fh 825: ht divisor 1
filter parent 1: protocol all pref 6 u32 fh 825::800 order 2048 key ht 825 bkt 0 flowid 1:16
mark 0x80030000 0xc03f0000 (success 943959)
filter parent 1: protocol all pref 7 u32
filter parent 1: protocol all pref 7 u32 fh 820: ht divisor 1
filter parent 1: protocol all pref 7 u32 fh 820::800 order 2048 key ht 820 bkt 0 flowid 1:14
mark 0x80040000 0xc03f0000 (success 379)
filter parent 1: protocol all pref 8 u32
filter parent 1: protocol all pref 8 u32 fh 806: ht divisor 1
filter parent 1: protocol all pref 8 u32 fh 806::800 order 2048 key ht 806 bkt 0 flowid 1:11
mark 0x80050000 0xc03f0000 (success 9398)
filter parent 1: protocol all pref 9 u32
filter parent 1: protocol all pref 9 u32 fh 807: ht divisor 1
filter parent 1: protocol all pref 9 u32 fh 807::800 order 2048 key ht 807 bkt 0 flowid 1:11
mark 0x80060000 0xc03f0000 (success 205)
filter parent 1: protocol all pref 10 u32
filter parent 1: protocol all pref 10 u32 fh 80b: ht divisor 1
filter parent 1: protocol all pref 10 u32 fh 80b::800 order 2048 key ht 80b bkt 0 flowid 1:13
mark 0x80070000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 10 u32 fh 80b::801 order 2049 key ht 80b bkt 0 flowid 1:17
mark 0x803f0001 0xc03fffff (success 0)
filter parent 1: protocol all pref 11 u32
filter parent 1: protocol all pref 11 u32 fh 80a: ht divisor 1
filter parent 1: protocol all pref 11 u32 fh 80a::800 order 2048 key ht 80a bkt 0 flowid 1:12
mark 0x80080000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 12 u32
filter parent 1: protocol all pref 12 u32 fh 803: ht divisor 1
filter parent 1: protocol all pref 12 u32 fh 803::800 order 2048 key ht 803 bkt 0 flowid 1:10
mark 0x80090000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 13 u32
filter parent 1: protocol all pref 13 u32 fh 80c: ht divisor 1
filter parent 1: protocol all pref 13 u32 fh 80c::800 order 2048 key ht 80c bkt 0 flowid 1:13
mark 0x800a0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 14 u32
filter parent 1: protocol all pref 14 u32 fh 80d: ht divisor 1
filter parent 1: protocol all pref 14 u32 fh 80d::800 order 2048 key ht 80d bkt 0 flowid 1:13
mark 0x800b0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 15 u32
filter parent 1: protocol all pref 15 u32 fh 821: ht divisor 1
filter parent 1: protocol all pref 15 u32 fh 821::800 order 2048 key ht 821 bkt 0 flowid 1:15
mark 0x800c0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 15 u32 fh 821::801 order 2049 key ht 821 bkt 0 flowid 1:16
mark 0x800d0007 0xc03fffff (success 0)
filter parent 1: protocol all pref 15 u32 fh 821::802 order 2050 key ht 821 bkt 0 flowid 1:16
mark 0x800d0086 0xc03fffff (success 0)
filter parent 1: protocol all pref 15 u32 fh 821::803 order 2051 key ht 821 bkt 0 flowid 1:16
mark 0x800d00a0 0xc03fffff (success 0)
filter parent 1: protocol all pref 16 u32
filter parent 1: protocol all pref 16 u32 fh 822: ht divisor 1
filter parent 1: protocol all pref 16 u32 fh 822::800 order 2048 key ht 822 bkt 0 flowid 1:15
mark 0x800d0000 0xc03f0000 (success 248475)
filter parent 1: protocol all pref 17 u32
filter parent 1: protocol all pref 17 u32 fh 826: ht divisor 1
filter parent 1: protocol all pref 17 u32 fh 826::800 order 2048 key ht 826 bkt 0 flowid 1:16
mark 0x800e0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 18 u32
filter parent 1: protocol all pref 18 u32 fh 808: ht divisor 1
filter parent 1: protocol all pref 18 u32 fh 808::800 order 2048 key ht 808 bkt 0 flowid 1:11
mark 0x800f0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 20 u32
filter parent 1: protocol all pref 20 u32 fh 809: ht divisor 1
filter parent 1: protocol all pref 20 u32 fh 809::800 order 2048 key ht 809 bkt 0 flowid 1:11
mark 0x80110000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 20 u32 fh 809::801 order 2049 key ht 809 bkt 0 flowid 1:15
mark 0x8012003f 0xc03fffff (success 57)
filter parent 1: protocol all pref 21 u32
filter parent 1: protocol all pref 21 u32 fh 801: ht divisor 1
filter parent 1: protocol all pref 21 u32 fh 801::800 order 2048 key ht 801 bkt 0 flowid 1:10
mark 0x80120000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 22 u32
filter parent 1: protocol all pref 22 u32 fh 828: ht divisor 1
filter parent 1: protocol all pref 22 u32 fh 828::800 order 2048 key ht 828 bkt 0 flowid 1:15
mark 0x80130000 0xc03f0000 (success 1413)
filter parent 1: protocol all pref 23 u32
filter parent 1: protocol all pref 23 u32 fh 829: ht divisor 1
filter parent 1: protocol all pref 23 u32 fh 829::800 order 2048 key ht 829 bkt 0 flowid 1:15
mark 0x80140000 0xc03f0000 (success 25365)
filter parent 1: protocol all pref 24 u32
filter parent 1: protocol all pref 24 u32 fh 80e: ht divisor 1
filter parent 1: protocol all pref 24 u32 fh 80e::800 order 2048 key ht 80e bkt 0 flowid 1:13
mark 0x80150000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 26 u32
filter parent 1: protocol all pref 26 u32 fh 80f: ht divisor 1
filter parent 1: protocol all pref 26 u32 fh 80f::800 order 2048 key ht 80f bkt 0 flowid 1:13
mark 0x80170000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 27 u32
 
Part 2 (RT-AC3100)

filter parent 1: protocol all pref 27 u32 fh 823: ht divisor 1
filter parent 1: protocol all pref 27 u32 fh 823::800 order 2048 key ht 823 bkt 0 flowid 1:15
mark 0x80180000 0xc03f0000 (success 78)
filter parent 1: protocol all pref 31 u32
filter parent 1: protocol all pref 31 u32 fh 810: ht divisor 1
filter parent 1: protocol all pref 31 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:14
mark 0x801c0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 32 u32
filter parent 1: protocol all pref 32 u32 fh 811: ht divisor 1
filter parent 1: protocol all pref 32 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:14
mark 0x801d0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 33 u32
filter parent 1: protocol all pref 33 u32 fh 812: ht divisor 1
filter parent 1: protocol all pref 33 u32 fh 812::800 order 2048 key ht 812 bkt 0 flowid 1:14
mark 0x801e0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 34 u32
filter parent 1: protocol all pref 34 u32 fh 813: ht divisor 1
filter parent 1: protocol all pref 34 u32 fh 813::800 order 2048 key ht 813 bkt 0 flowid 1:14
mark 0x801f0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 35 u32
filter parent 1: protocol all pref 35 u32 fh 814: ht divisor 1
filter parent 1: protocol all pref 35 u32 fh 814::800 order 2048 key ht 814 bkt 0 flowid 1:14
mark 0x80200000 0xc03f0000 (success 0)
 
Part 3 (RT-AC3100)

filter parent 1: protocol all pref 36 u32
filter parent 1: protocol all pref 36 u32 fh 815: ht divisor 1
filter parent 1: protocol all pref 36 u32 fh 815::800 order 2048 key ht 815 bkt 0 flowid 1:14
mark 0x80210000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 37 u32
filter parent 1: protocol all pref 37 u32 fh 816: ht divisor 1
filter parent 1: protocol all pref 37 u32 fh 816::800 order 2048 key ht 816 bkt 0 flowid 1:14
mark 0x80220000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 38 u32
filter parent 1: protocol all pref 38 u32 fh 817: ht divisor 1
filter parent 1: protocol all pref 38 u32 fh 817::800 order 2048 key ht 817 bkt 0 flowid 1:14
mark 0x80230000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 39 u32
filter parent 1: protocol all pref 39 u32 fh 818: ht divisor 1
filter parent 1: protocol all pref 39 u32 fh 818::800 order 2048 key ht 818 bkt 0 flowid 1:14
mark 0x80240000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 40 u32
filter parent 1: protocol all pref 40 u32 fh 819: ht divisor 1
filter parent 1: protocol all pref 40 u32 fh 819::800 order 2048 key ht 819 bkt 0 flowid 1:14
mark 0x80250000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 41 u32
filter parent 1: protocol all pref 41 u32 fh 81a: ht divisor 1
filter parent 1: protocol all pref 41 u32 fh 81a::800 order 2048 key ht 81a bkt 0 flowid 1:14
mark 0x80260000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 42 u32
filter parent 1: protocol all pref 42 u32 fh 81b: ht divisor 1
filter parent 1: protocol all pref 42 u32 fh 81b::800 order 2048 key ht 81b bkt 0 flowid 1:14
mark 0x80270000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 43 u32
filter parent 1: protocol all pref 43 u32 fh 81c: ht divisor 1
filter parent 1: protocol all pref 43 u32 fh 81c::800 order 2048 key ht 81c bkt 0 flowid 1:14
mark 0x80280000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 44 u32
filter parent 1: protocol all pref 44 u32 fh 81d: ht divisor 1
filter parent 1: protocol all pref 44 u32 fh 81d::800 order 2048 key ht 81d bkt 0 flowid 1:14
mark 0x80290000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 45 u32
filter parent 1: protocol all pref 45 u32 fh 81e: ht divisor 1
filter parent 1: protocol all pref 45 u32 fh 81e::800 order 2048 key ht 81e bkt 0 flowid 1:14
mark 0x802a0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 46 u32
filter parent 1: protocol all pref 46 u32 fh 81f: ht divisor 1
filter parent 1: protocol all pref 46 u32 fh 81f::800 order 2048 key ht 81f bkt 0 flowid 1:14
mark 0x802b0000 0xc03f0000 (success 0)
filter parent 1: protocol all pref 50 u32
filter parent 1: protocol all pref 50 u32 fh 82b: ht divisor 1
filter parent 1: protocol all pref 50 u32 fh 82b::800 order 2048 key ht 82b bkt 0 flowid 1:16
mark 0x801a0000 0xc03f0000 (success 104)
admin@RT-AC3100:/tmp/home/root#
 
@Jack Yaz your configuration is still working.

The affected code block responsible for the modification hasn’t been updated in ages.

@L&LD

please use [ code] texthere [ /code] tags

or pastebin.com

But your configuration is fine aswell.

@Tekneek

Maybe the 5minute wait is not sufficient for your router.

Force a daily scheduled check with

Code:
/jffs/scripts/FreshJR_QOS -check

And see it gets corrected.
 
@Jack Yaz your configuration is still working.

The affected code block responsible for the modification hasn’t been updated in ages.

@L&LD

please use [ code] texthere [ /code] tags

or pastebin.com

But your configuration is fine aswell.

@Tekneek

Maybe the 5minute wait is not sufficient for your router.

Force a daily scheduled check with

Code:
/jffs/scripts/FreshJR_QOS -check

And see it gets corrected.


Thank you. I'll use the Code tags next time too.
 
Maybe the 5minute wait is not sufficient for your router.

Force a daily scheduled check with

Code:
/jffs/scripts/FreshJR_QOS -check

And see it gets corrected.

That did the trick. Thanks! This is far preferable to rebuilding my router configuration all Saturday evening.

Code:
FreshJR QOS v8.8
Debug:

adaptive QOS: Undf Prio: 2
adaptive QOS: Undf FlowID: 1:13
adaptive QOS: Classes Present: 8
adaptive QOS: Down Band: 307200
adaptive QOS: Up Band  : 25600
adaptive QOS: ***********
adaptive QOS: Net = 1:10
adaptive QOS: VOIP = 1:11
adaptive QOS: Gaming = 1:12
adaptive QOS: Others = 1:13
adaptive QOS: Web = 1:14
adaptive QOS: Streaming = 1:15
adaptive QOS: Downloads = 1:16
adaptive QOS: Defaults = 1:17
adaptive QOS: ***********
adaptive QOS: Downrates -- 15360, 61440, 46080, 30720, 30720, 92160, 15360, 15360
adaptive QOS: Downceils -- 307200, 307200, 307200, 307200, 307200, 307200, 307200, 307200
adaptive QOS: Downbursts -- 19200b, 75Kb, 38390b, 19200b, 14392b, 11185b, 6395b, 3196b
adaptive QOS: DownCbursts -- 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb
adaptive QOS: ***********
adaptive QOS: Uprates -- 1280, 5120, 3840, 7680, 2560, 2560, 1280, 1280
adaptive QOS: Upciels -- 25600, 25600, 25600, 25600, 25600, 25600, 25600, 25600
adaptive QOS: Upbursts -- 3200b, 6400b, 3199b, 3198b, 3200b, 3198b, 3200b, 3200b
adaptive QOS: UpCbursts -- 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b
 
So the issue with the AC3200 was that the 5minute delay start is not long enough for adaptiveQOS to finish setting itself up completely prior to performing modifications.

I’ll increase the wait to 10 minutes in the next release.

Either way. It isn’t a major issue for anyone affected, as the script will correct itself at the next daily scheduled check.
 
Last edited:
Now this is weird... Without changing anything on the router, it went from looking good at 18:23:22:
Code:
Mar 30 18:23:22 adaptive QOS: Undf Prio: 2
Mar 30 18:23:22 adaptive QOS: Undf FlowID: 1:13
Mar 30 18:23:22 adaptive QOS: Classes Present: 8
Mar 30 18:23:22 adaptive QOS: Down Band: 307200
Mar 30 18:23:22 adaptive QOS: Up Band  : 25600
Mar 30 18:23:22 adaptive QOS: ***********
Mar 30 18:23:22 adaptive QOS: Net = 1:10
Mar 30 18:23:22 adaptive QOS: VOIP = 1:11
Mar 30 18:23:22 adaptive QOS: Gaming = 1:12
Mar 30 18:23:22 adaptive QOS: Others = 1:13
Mar 30 18:23:22 adaptive QOS: Web = 1:14
Mar 30 18:23:22 adaptive QOS: Streaming = 1:15
Mar 30 18:23:22 adaptive QOS: Downloads = 1:16
Mar 30 18:23:22 adaptive QOS: Defaults = 1:17
Mar 30 18:23:22 adaptive QOS: ***********
Mar 30 18:23:22 adaptive QOS: Downrates -- 15360, 61440, 46080, 30720, 30720, 92160, 15360, 15360
Mar 30 18:23:22 adaptive QOS: Downceils -- 307200, 307200, 307200, 307200, 307200, 307200, 307200, 307200
Mar 30 18:23:22 adaptive QOS: Downbursts -- 19200b, 75Kb, 38390b, 19200b, 14392b, 11185b, 6395b, 3196b
Mar 30 18:23:22 adaptive QOS: DownCbursts -- 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb
Mar 30 18:23:22 adaptive QOS: ***********
Mar 30 18:23:22 adaptive QOS: Uprates -- 1280, 5120, 3840, 7680, 2560, 2560, 1280, 1280
Mar 30 18:23:22 adaptive QOS: Upciels -- 25600, 25600, 25600, 25600, 25600, 25600, 25600, 25600
Mar 30 18:23:22 adaptive QOS: Upbursts -- 3200b, 6400b, 3199b, 3198b, 3200b, 3198b, 3200b, 3200b
Mar 30 18:23:22 adaptive QOS: UpCbursts -- 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b

To being back to 1:17 at 18:56:02:
Code:
Mar 30 18:56:02 adaptive QOS: Undf Prio: 2
Mar 30 18:56:02 adaptive QOS: Undf FlowID: 1:17
Mar 30 18:56:02 adaptive QOS: Classes Present: 8
Mar 30 18:56:02 adaptive QOS: Down Band: 307200
Mar 30 18:56:02 adaptive QOS: Up Band  : 25600
Mar 30 18:56:02 adaptive QOS: ***********
Mar 30 18:56:02 adaptive QOS: Net = 1:10
Mar 30 18:56:02 adaptive QOS: VOIP = 1:11
Mar 30 18:56:02 adaptive QOS: Gaming = 1:12
Mar 30 18:56:02 adaptive QOS: Others = 1:13
Mar 30 18:56:02 adaptive QOS: Web = 1:14
Mar 30 18:56:02 adaptive QOS: Streaming = 1:15
Mar 30 18:56:02 adaptive QOS: Downloads = 1:16
Mar 30 18:56:02 adaptive QOS: Defaults = 1:17
Mar 30 18:56:02 adaptive QOS: ***********
Mar 30 18:56:02 adaptive QOS: Downrates -- 15360, 61440, 46080, 30720, 30720, 92160, 15360, 15360
Mar 30 18:56:02 adaptive QOS: Downceils -- 307200, 307200, 307200, 307200, 307200, 307200, 307200, 307200
Mar 30 18:56:02 adaptive QOS: Downbursts -- 19200b, 75Kb, 38400b, 19200b, 14398b, 11198b, 6398b, 3199b
Mar 30 18:56:02 adaptive QOS: DownCbursts -- 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb, 375Kb
Mar 30 18:56:02 adaptive QOS: ***********
Mar 30 18:56:02 adaptive QOS: Uprates -- 1280, 5120, 3840, 7680, 2560, 2560, 1280, 1280
Mar 30 18:56:02 adaptive QOS: Upciels -- 25600, 25600, 25600, 25600, 25600, 25600, 25600, 25600
Mar 30 18:56:02 adaptive QOS: Upbursts -- 3200b, 6400b, 3200b, 3200b, 3200b, 3199b, 3200b, 3200b
Mar 30 18:56:02 adaptive QOS: UpCbursts -- 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b, 32000b
 
The only unusual things I see in the log between those two times seem to be about dnsmasq, which should not be related? I have not seen these entries before, though:
Code:
dnsmasq[304]: failed to send packet: Operation not permitted
dnsmasq[304]: message repeated 45 times: [ failed to send packet: Operation not permitted]

There are many similar messages, with various integers for the number of times it has repeated.
 
@Tekneek

You’ll need to

1) turn off Qos

2)
Code:
 touch /tmp/qos_debug

3) Turn on QOS

4) Let everything run for an hour or so

5) Send me the following file /tmp/qos.log
(use whatever scp client you are comfortable with)

6)
Code:
nvram unset qos_debug
rm /tmp/qos.log
rm /tmp/qos_debug

Feel free to throw in a random

/jffs/scripts/FreshJR_QOS -check

somewhere around the 30 minute mark just to see if it will persist.
 
Last edited:
Ok, I will follow those steps. Thanks again.
 
Man @FreshJR , so I waited that entire hour and looks like it didn't write the /tmp/qos.log file at all.

Code:
ls: /tmp/qos.log: No such file or directory

I looked at the nvram values and qos_debug is set to 1:
Code:
qos_debug=1
 
Man @FreshJR , so I waited that entire hour and looks like it didn't write the /tmp/qos.log file at all.

Code:
ls: /tmp/qos.log: No such file or directory

I looked at the nvram values and qos_debug is set to 1:
Code:
qos_debug=1

Forgot rmerlin changed faketc to not use that nvram variable. I’ll update the previous post now.
 
Forgot rmerlin changed faketc to not use that nvram variable. I’ll update the previous post now.

Going for take two! Thanks!

And I can confirm the file is being written to:
Code:
44919 Mar 30 20:31 qos.log
 
Ok, @FreshJR, what is the best way to get this file to you?
 
I'm also wondering how it will affect performance and the CPU.

Well im not as advanced as like fresh is but have an understanding of how aht works. Would make sense to me that lower bursts being great at reducing going over threshhold will also cause earlier throttling which i would think is work for something instead of jus allowing to pass thru. But perhaps its already processing it either way and makes no diff.
 
Status
Not open for further replies.

Latest threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top