1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

[Fork] Tomato by Shibby, compiled by @kille72

Discussion in 'Tomato Firmware' started by kille72, Mar 24, 2017.

  1. tsynik

    tsynik Reformed Router Member

    I've tested 3.0 with all available options, and even replaced it before to external (Entware-NG) version (also 3.0 at that times), because that situation (poor speeds) drive me mad. No success, 3.6 roxxx! And yes, I have more than average setup with internal SATA HDD, and 15-30 MB/s not a good speeds, when you can have 60 ;-)
     
  2. blackmack

    blackmack LI Guru Member

    With shibby 140 on AC68U CPU overclocked @1200 I have read speed around 44MB/s on 1TB USB3.0 2,5'' drive.
    Can someone compile and send me the new version for test?

    Would be nice to have USB3 led fixed too finally for AC68U.
     
  3. Sean B.

    Sean B. LI Guru Member

    With USB 3.0 enabled, what is the noise floor for your radios at? On my RT-AC68P ( and from what I hear most other routers ) the USB 3.0 speeds are no where near their potential and not a lot over what I'm getting with a good USB 2.0 drive. Didn't justify the rather high interference USB 3.0 generates for the radios.. noise floor with 3.0 enabled was -85dBm.. without 3.0 enabled it's -93dBm.
     
  4. kille72

    kille72 LI Guru Member

    You can test 2017.2_beta_39 (AC56U/AC68U/N18U) :cool: https://exotic.se/tomato-arm/Test

    I don't have time to test LEDs (I don't like flashing Christmas trees either).
     
  5. blackmack

    blackmack LI Guru Member

    its -82dBm with USB 3.0 enabled.

    Tested kille72s beta. No speed improvement. Did you already apllied speed tweak?
     
    Last edited: Jun 16, 2017
  6. kille72

    kille72 LI Guru Member

  7. rs232

    rs232 Network Guru Member

    I've installed beta_39.

    I'm not sure if this was introduced or has always been the case:

    Let's say a network host boots up and gets an IP, both IP and hostname appear in device list in tomato.
    If at this point the router is rebooted under device list you will only find reference ot the IP but no the hostname any more. This of course affects the DNS resolution as well.
     
  8. kille72

    kille72 LI Guru Member

    No problem here, after reboot:

    11.png

    Have you erased NVRAM after update?
     
    Last edited: Jun 16, 2017
  9. rs232

    rs232 Network Guru Member

    Humm interesting. No I didn't erase the NVRAM I'll try next.
    About your example: are those hosts DHCP static or DHCP dynamic?
    Mine are dynamic.
     
  10. kille72

    kille72 LI Guru Member

    Static.
     
  11. rs232

    rs232 Network Guru Member

    Ok I have converted one dynamic into static and it works.
    So the issue is affecting dynamic host only.
    As a test I invite you to convert one of your static into dynamic and try again (reboot). It shoud fail.
     
  12. kille72

    kille72 LI Guru Member

    No problem after reboot, dynamic DHCP for one client:

    2.png 22.png
     
  13. Sean B.

    Sean B. LI Guru Member

    How long is your DHCP lease time set for?
     
  14. rs232

    rs232 Network Guru Member

    the maximum: 10080 min
     
  15. Sean B.

    Sean B. LI Guru Member

    The hostnames of the clients are learned by dnsmasq during the DHCP exchange and the known hostnames do not survive a reboot unless they are set static. Meaning dnsmasq has to rediscover all IP/hostname associations after the reboot. If your clients are systems that don't monitor link status, or if the ports don't power down ( or not long enough for the client to detect it as a network disconnect, which would cause the client to do a DHCP discover upon the reconnect ) with a commanded reboot ( vs a full shutdown then restart ) then the hostname will not be known by dnsmasq until T1 expires which is the half life of the DHCP lease in which the client will send out a request for renewal. The IP shows up long before the hostname because dnsmasq will discover the MAC/IP association via arp broadcast. Therefore the longer the lease time the client initially received, the longer it will be before the hostname reappears in dnsmasq. I'd guess this is what you're experiencing, but perhaps there are other circumstances going on.

    You can check by rebooting the router so hostnames are lost then manually renewing the lease on a client, such as "ipconfig renew" on windows. The hostname/IP association should reappear in the GUI. If this is the case, and the time it takes to happen normally is a concern you can:

    A: Set the lease times to a low enough value that the reassociation of hostname/IP after reboot happens within a time period you want.

    B: Set static reservations for the clients.

    C: Leave the IP dynamic but assign static hostname/MAC associations via dnsmasq custom config. Example: putting this in the custom config box of Advanced->DHCP/DNS

    dhcp-host=00:20:e0:3b:13:af,MYHOSTNAME,infinite

    Will give the client with the MAC address 00:20:e0:3b:13:af the hostname MYHOSTNAME and an infinite DHCP lease time.
     
    Last edited: Jun 17, 2017
    kille72 likes this.
  16. rs232

    rs232 Network Guru Member


    Thanks for this, I got to the same conclusion thinking on this topic last night. The hosts are mainly VMs which I build/destroy frequently, so no, no link state detection as the ESXi vswitch is always on. To be fair I do not reboot that often but I was just wondering if there was something that could be done differently to cover this scenario?

    I suppose dynamic hostnames *could* be store in NVRAM without being necessarely a static mapping.
    Perhaps modifying the reboot sequance into a
    - store lease into NVRAM when the reboot button is pressed
    - let the device reboot
    - as soon as dnmasq is started -> load lease from NVRAM
    - remove lease from NVRAM

    I do appraciate this will have an impact (even if temporally only) on NVRAM usage though.

    No specific reason in having such a long lease time I just didn't see the need (before this) to have anything shorter.

    I could indeed reduce the lease to a very short time or even map the hosts manually, but I was trying to think out of the box to see if there's a smarter solution that's all.
     
  17. Sean B.

    Sean B. LI Guru Member

    Do note that I edited my post to include a custom config option that will maintain the dynamic IP assignment yet allow hostnames to persist through reboots.

    Woops, looks like you did see that part. Read over it in the last few lines, Sorry.

    If you are using USB storage of any kind on the router, you can save a copy of dnsmasqs leases file automatically via script when reboots are commanded then have dnsmasq reload it on boot via adding addn-hosts=/path/to/file to dnsmasq config. But I don't see it's difference than my suggestion before, same goes for:

    I'm a bit confused, as this is a very over complicated way of doing exactly what I suggested would do:
     
    Last edited: Jun 17, 2017
    kille72 likes this.
  18. joksi

    joksi Serious Server Member

    @kille72

    I would really appreciate if you could consider including the following patch discussed about in the thread below. I have tried highlighting this issue with Tomato firmware a couple of times, last two years, but no one seem to have shown interest for it. Maybe the issue isn't so widespread probably if the function isn't used (ie VLC client never sends the "destionation=X.X.X.X" header), but after all it still is a bug and it should work. I have a VOD-provider with an STB not aware of STUN, so it uses it's local LAN IP in all packets (resulting in breaking the unicast VOD-streams). I have this solved woth a workaround, but it really shouldn't be needed when the conntrack helper functions actually exist and are implemented in Linux.

    https://community.ubnt.com/t5/EdgeM...by-NAT-due-to-missing-RTSP/m-p/1275474#M68220

    https://github.com/maru-sama/rtsp-linux

    The problem I guess is nf_nat_rtsp not working correctly in Tomato firmware, meaning not translating the SDP packets internal LAN IP to the WAN-interface public IP. If I recall correctly however the nf_conntrack_rtsp does work, my STB is using port 5055 (instead of default 554) and when issuing "insmod nf_conntrack_rtsp ports=5055" works, though "insmod nf_nat_rtsp ports=5055" doesnt. It gives following error:
    insmod: can't insert '/lib/modules/2.6.36.4brcmarm/kernel/net/ipv4/netfilter/nf_nat_rtsp.ko': unknown symbol in module, or unknown parameter

    It should work according the documentation on the second link, in the Github file nf_nat.conntrack.c, see below:

    Module load syntax:
    * insmod nf_nat_rtsp.o ports=port1,port2,...port<MAX_PORTS>
    * stunaddr=<address>
    * destaction=[auto|strip|none]

    Is this something you would care to take a look on, maybe?
    Alternately, if you (or someone else?) could recompile a new version of the module(s) and I would happily save it on jffs. :)
     
    Last edited: Jun 17, 2017
    Elfew likes this.
  19. chchia

    chchia LI Guru Member

    @kille72

    I trying to compile your source, but when compiling mysql i got this

    Code:
    sql_yacc.yy:13759:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.cc:14844:30: error: too few arguments to function ‘int MYSQLlex(void*, void*)’
    sql_yacc.yy:58:5: note: declared here
    sql_yacc.yy:13760:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13761:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13765:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13766:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13771:7: error: ‘yythd’ was not declared in this scope
    
    .............. (hundred of this same error)
    
    sql_yacc.yy:13773:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13779:7: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13785:23: error: ‘yythd’ was not declared in this scope
    sql_yacc.yy:13795:23: error: ‘yythd’ was not declared in this scope
    Makefile:934: recipe for target 'sql_yacc.o' failed
    make[8]: *** [sql_yacc.o] Error 1
    make[8]: Leaving directory '/home/chchia/tomato-arm-kille72/release/src-rt-6.x.4708/router/mysql/sql'
    Makefile:1005: recipe for target 'all-recursive' failed
    make[7]: *** [all-recursive] Error 1
    make[7]: Leaving directory '/home/chchia/tomato-arm-kille72/release/src-rt-6.x.4708/router/mysql/sql'
    
    i tried downgrade the bison but not work, any idea?

    thank you.
     
  20. joksi

    joksi Serious Server Member

     
  21. lancethepants

    lancethepants Network Guru Member

    @joksi
    You must insmod nf_conntrack_rtsp first. Or just run "modprobe nf_nat_rtsp" and it will take care of the other kernel module dependencies.
     
  22. joksi

    joksi Serious Server Member

    Yes, I have tried that already, but it doesn't work. Seems like nf_nat_rtsp is missing the "ports" parameter from the documentation. It seems it's an old version of the modules, 0.6.21, while the one I linked to is 0.7. I must somehow tell both conntrack and nat modules to watch on port 5055, instead of RTSP default 554.

    Command "dmesg" reports "nf_nat_rtsp: Unknown parameter `ports'"
     
  23. joksi

    joksi Serious Server Member

    ls -la /sys/module/nf_conntrack_rtsp/parameters
    drwxr-xr-x 2 root root 0 Jun 18 12:23 .
    drwxr-xr-x 5 root root 0 Jun 18 12:23 ..
    -r-------- 1 root root 4096 Jun 18 12:24 max_outstanding
    -r-------- 1 root root 4096 Jun 18 12:24 ports
    -r-------- 1 root root 4096 Jun 18 12:24 setup_timeout

    ls -la /sys/module/nf_nat_rtsp/parameters
    drwxr-xr-x 2 root root 0 Jun 18 12:23 .
    drwxr-xr-x 5 root root 0 Jun 18 12:23 ..
    -rw-r--r-- 1 root root 4096 Jun 18 12:24 destaction
    -rw-r--r-- 1 root root 4096 Jun 18 12:24 stunaddr

    As you can see, nf_conntrack_rtsp have "ports", but not nf_nat_rtsp.
     
  24. joksi

    joksi Serious Server Member

    I have also tried only setting ports on conntrack, but the nat module doesnt translate the "destination" in the SDP packet


    SETUP rtsp://194.22.194.178:5055/1_30459740.tsv RTSP/1.0.
    User-Agent: Kreatel_IP-STB.
    Transport: MP2T/H2221/UDP;unicast;destination=10.1.1.58;client_port=26866.

    This is Wireshark output on the WAN-interface.
     
  25. joksi

    joksi Serious Server Member

    Below is from a changelog regarding Linux on EdgeOS (Ubiquity)

    • [Kernel] Add the RTSP helper modules for certain video streaming applications. This was reported by and discussed with community members including rjh2805 tivoli synackack zx2c4 sufk opimon NovapaX Boko , for example here. The source code is imported from: https://github.com/maru-sama/rtsp-linux.git Noe that currently there is no configuration for this and the modules are not loaded by default. In order to use these, issue the following commands from the CLI:
      sudo modprobe nf_nat_rtsp

      If people can verify that it works well, we could load them with the other NAT/conntrack modules and/or add configuration option for this. So please give it a try. Thanks!
    I think a firmware as competent and up-to-date as Tomato should also contain working modules?
     
  26. Sean B.

    Sean B. LI Guru Member

    Is loading fine on Toastman-ARM:

    Module Size Used by Tainted: P
    nf_nat_rtsp 3202 0
    nf_conntrack_rtsp 4067 1 nf_nat_rtsp
    nls_cp437 4474 0
    ip6table_filter 750 1
    ip6table_mangle 934 1
    xt_length 769 2
    xt_recent 6394 4
    nf_conntrack_ipv6 8583 4
    ehci_hcd 31597 0
    tntfs 439769 0
    exfat 91281 0
    vfat 8509 0
    fat 43022 1 vfat
    ext4 221882 3
    crc16 1007 1 ext4
    jbd2 48989 1 ext4
    mbcache 4599 1 ext4
    usb_storage 27130 4
    usb_libusual 9305 1 usb_storage
    sd_mod 21983 6
    scsi_wait_scan 416 0
    scsi_mod 108730 2 usb_storage,sd_mod
    usbcore 101702 4 ehci_hcd,usb_storage,usb_libusual
    nf_nat_pptp 1602 0
    nf_conntrack_pptp 3355 1 nf_nat_pptp
    nf_nat_proto_gre 887 1 nf_nat_pptp
    nf_conntrack_proto_gre 3228 1 nf_conntrack_pptp
    wl 3925788 0
    et 61321 0
    igs 11887 1 wl
    emf 14973 2 wl,igs
     
    M_ars likes this.
  27. Elfew

    Elfew Network Guru Member

    tomatouser123 and LastSilmaril like this.
  28. joksi

    joksi Serious Server Member

    Yes, it does load for me too on Shibby v.140, but how do you load it? And have you actually verified that the modules in fact work and does what their supposed to do? nf_conntrack_rtsp should dynamically open UDP ports negotiated in SDP-messages when starting a stream (default port 554 for RTSP), and nf_nat_rtsp should masquerade the LAN-IP in SDP-messages. Now for example VLC does not send any "destination=X.X.X.X" parameter, so nf_nat_rtsp isn't needed, it's only needed for clients or STB's not aware of STUN (like VoIP).

    Try insmod / modprobe nf_nat_rtsp ports=XXXX and you'll probably get an error like I do, the ports parameter only works with nf_conntrack_rtsp. That's why I think the modules aren't working on Tomato, and should be upgraded from v. 0.6.21 to 0.7.

     
    Last edited: Jun 18, 2017
  29. Sean B.

    Sean B. LI Guru Member

    You don't specify ports with the module itself. Netfilter modules are extensions for the kernel to be used with iptables. If they add new functions then you'd set the ports on a rule line specifying the module with the -m flag. Or if they're kernel helpers then they work on the back end, things like adding the use of another protocol to an already existing function.. such as SNAT/DNAT.
     
    Last edited: Jun 18, 2017
  30. joksi

    joksi Serious Server Member

    I'm sorry to have to say this, but you're wrong (according to the modules documentation). Have you read my posts at all?
    I know this for sure, because when loading the module without the "ports" parameter I cannot watch an RTSP-stream on port 5055 (only works on default 554), but when adding the ports parameter to nf_conntrack_rtsp it starts working. The problem here is just that nf_nat_rtsp isn't doing what it's supposed to do (masquerading), or isn't doing it on the custom port even when set in nf_conntrack_rtsp only (cannot verify on default port, because my IP-TV provider and STB who's in need of masquerading unfortunately isn't using default, and the PC with VLC doesn't use the "destination" flag at all so can't simulate) .

    EDIT: Actually, after testing right now I have to take it back, the "ports" parameter seems to do nothing. There is no way to start a stream in VLC on port 5055, nf_conntrack_rtsp doesn't open any ports. On default 554 it works.
    It's obvious to me that the RTSP-modules aren't working as they should, yet one more reason to read the links I posted earlier and try to upgrade to v 0.7.
     
    Last edited: Jun 19, 2017
  31. Sean B.

    Sean B. LI Guru Member

    If you say so:

    The module, aka helper, is there to keep track of dynamic port association during an active client/server exchange and translate across NAT if needed. If you feel this means a static port assignment is a required option of the module at install time, then eh.. ok. No offense, but I'd say it's more likely you've configured something wrong, whether directly ( as in with RTSP itself/on the streaming client or server ) or indirectly ( some unrelated iptables rule is unknowingly causing a problem etc ) than the module being broken.

    Could you point out what makes it so "obvious" it's the module causing this issue? Because I see no debugging information/logs that eliminate anything.. at all. Do you have any custom iptables rules or routing policy in effect? Are the accept rules properly configured in iptables for the initial exchange between client/server to start? Are the settings correct for client and server to match? Have you looked at anything besides the module? The only thing I've seen ( granted, I haven't read that closely ) you focus on is having a module install error using a port option that isn't needed or possibly even accepted at install time.
     
    Last edited: Jun 19, 2017
  32. Sean B.

    Sean B. LI Guru Member

    ?
     
  33. joksi

    joksi Serious Server Member

    Okey, so you're suggesting I'm wrong instead. I'm gladly wrong if you could point me in the right direction for making it work. First things first, have you read the official documentation for the two modules? It states clearly that the modules can be loaded with optional parameters (normally not neccesary), how can you then say that it isn't correct?
    The ports parameter should be accepted for both nf_conntrack_rtsp and nf_nat_rtsp, not only nf_conntrack_rtsp. nf_nat_rtsp also have some extra parameters for how to masquerade. So, if I'm not using the default port for RTSP (554) how do you think the modules are going to "see" that traffic and act on it, if the documentation clearly states that it's monitoring 554...? Please do explain this to me. The ports parameter is probably there for a reason, like, a custom port used for RTSP...

    Frankly, there is nothing to be configured wrong. RTSP is RTSP, a standard protocol, unfortunately my provider only deviates from this standard regarding the actual port being used. The server isn't within my reach, the client is a closed-source STB provided by the provider of the service. So what could possibly be configuration interference? The only specifics to this part is that I have a default route (not policy source route) in GUI routing a certain IP-network out a specific WAN (multi-WAN, WAN1), where the TV-streams and VOD-servers are found. That's all. If that's what's interfering with the modules being used, according to you, then we still have a problem with the modules not being flexible enough so to speak.

    So, to wrap this up, how do you propose to make the module helpers work for my situation?
     
  34. joksi

    joksi Serious Server Member

    Okey, you clearly misunderstood me. I'm not saying that VLC can't play a stream on a custom port, I'm saying that the modules are not being activated on this custom port... the modules aren't manglig the RTSP-packets and opening UDP-ports dynamically.
     
  35. Sean B.

    Sean B. LI Guru Member

    Start by explaining exactly what your use case. You said:

    Is this the root of the need to change ports? To match the providers configuration?

    Have you set up any port forwards or iptables rules regarding any of the ports in discussion?
     
  36. Sean B.

    Sean B. LI Guru Member

    I've read back through your posts and am having a hard time following exactly what's going on with your provider. Is the initial RTSP connection arriving at your WAN on port 5055 rather than 554? And your unable to change the service port for initial connection to 5055.. is this correct?
     
    Last edited: Jun 19, 2017
  37. joksi

    joksi Serious Server Member

    Sort of, the provider is using a dynamically negotiated UDP-port to send the unicast VOD-stream to my STB, and the STB initiates SSDP communication on port 5055 (instead of default 554 for RTSP). I guess this is de facto standard with every IPTV-provider, well other then not using standard ports maybe.
    My solution for making it work is a combination of a proxy daemon running on the router rewriting the SDP packets and masquerading the IP, and port triggering with IP-tables. It does work, but probably not as optimal as kernel module helpers supposed to do the job. It's a work-around, simply put.

    I have disabled this daemon now and IP-table rules when testing the built-in RTSP modules, but they seem to monitor only port 554 for RTSP SDP-packets. That's the source of my problem, and that's why I'm trying to load the RTSP conntrack- and NAT-helper modules with the "ports" parameter.
     
  38. Sean B.

    Sean B. LI Guru Member

    Thank you the clear and linear explination of what's going on. I see what you're getting at now, as I was previously under the impression you were trying to specify port 5055 for the helper to "open".. when those are dynamicly generated by the client/server. I'll continue researching a solution.
     
    kille72 and joksi like this.
  39. Nitin Vaid

    Nitin Vaid Connected Client Member

    I dont know about smb 3.0.. i have android device i use es file explorer my pc drives are shared and in ES file explorer under smb/my pc i get max download of 4-5mb/sec actual file transfer and upload is just 400-500kbps
    then i found out that i can use ftp also in es file explorer
    then via filezilla FTP in my pc installed now i am getting speed of actual 120mb/sec actual transfer download
     
  40. rs232

    rs232 Network Guru Member

    I didn't get an "a" of your post. Can you please re-phrase?
     
  41. Nitin Vaid

    Nitin Vaid Connected Client Member

    i am just saying that i am when i use smb on my android and transfer data from my pc to my android device i get speed of 4-5mb/sec actual data transfer rate and when i use FTP i am getting speed of 100mb/sec+

    is there any way to get more data transfer speed in smb?
     
  42. rs232

    rs232 Network Guru Member

    - I asume you refer to MB and not Mb right?
    - I assume your android devices are connected via WiFi
    - 4-5 MB for a wifi connection is very decent speed
    - It's impossible with the current technology to get 100MB via WiFi so I don't get how you're benchmarking this.

    Regardless this has nothing to do with this thread so I invite you to open a new thread to cover your issue.

    Thanks :)
     
    AndreDVJ and kille72 like this.
  43. The Master

    The Master Network Guru Member

    @kille72 is there a Releasedate for the new FW? I ask because its only 11 Days away to your Holiday and if you Release it on the last Day and something terrible went wrong nobody could fix it ;).

    @Funktion ReQuest.

    is it Possible to a port/ Ip to WAN2? It would be nice because i have 2 Wan Connections Wan 1 is 75/5 and Wan 2 is 30/10 (MBIT). So it would be nice if i could "MAP" a IP/Port to Wan2 Upload to use the faster Uploadrate?!

    If not no Problem.

    Love the Tomato Comunity.:)
     
  44. joksi

    joksi Serious Server Member

    You'll find this in Advanced Settings -> MultiWAN Routing
     
  45. The Master

    The Master Network Guru Member

    i know that but this is only WORKING for INBOUND, not Outbound Traffic.
     
  46. joksi

    joksi Serious Server Member

    I saved my config and did a nvram reset. When loading the RTSP conntrack helpers in GUI (default port 554), an RTSP stream in VLC are working on port 554 but not on 5055. I then unloaded the modules and reloaded them with insmod nf_conntrack_rtsp ports=5055 and insmod nf_nat_rtsp and the stream on 5055 started to work (funny that the stream on 554 also continued to work).

    However, this is in VLC and VLC seem to not send the destination=IP parameter (skips it) and that's why it works, but from my STB it doesn't work. So the culprit sure seem to be nf_nat_rtsp-module...
     
  47. joksi

    joksi Serious Server Member

    It's the other way around, policy routing only work OUTBOUND :)
     
  48. kille72

    kille72 LI Guru Member

    I don't know if there will be a new version soon, there are far too many bugs that I can't fix myself...
     
    The Master and gffmac like this.
  49. kille72

    kille72 LI Guru Member

    Last edited: Jun 19, 2017
  50. The Master

    The Master Network Guru Member

    .... Strange not here... all Traffic is only Wan 1 Outbound :(
     
  51. Edrikk

    Edrikk Network Guru Member

    I think that by merging up to the most recent comit from @tsynik you'll resolve the PPTP issue it seems. At least it won't be broken any worse than it currently is (I don't use it, but i read that it's completely broken)



    I don't think people know enough (or care) to fix the others as they may not be as used...
     
    M_ars and kille72 like this.
  52. Jeffry

    Jeffry Networkin' Nut Member

    I appreciate @kille72 effort to get Client Mode working. I think the coding to connect to the host router might be the problem. My Tomato loaded router keeps trying to connect to the host router but never connects or stays connected. However, when switched into Wireless Bridge mode, it connects and holds a connection just fine. I can get Client Mode if I use DD-WRT firmware but I prefer Tomato.
     
    Last edited: Jun 19, 2017
    kille72 likes this.
  53. skoub

    skoub Network Guru Member

    hi everyone

    i'm not sure if it's the right place to post this question but since this thread is really active, maybe i will get more help here.

    I have installed the latest version of Kille72 version for my Asus AC68U router. Everything is at their default value, cleared NVRAM and i really get poor speed over wifi 5ghz when i transfer a file from my nas compared to the original Asus firmware. 10Mb compared to 45Mb!

    Is there a setting that i missed somewhere? I get the same poor speed with Shibby version too.

    With Tomato 2017.1 or Shibby 140

    Sans titre.png




    With original Asus firmware

    Sans titre2.png
     
  54. Sean B.

    Sean B. LI Guru Member

    Are you sure it's VLC not sending it, or is it the module doing its job?

    It may be the way your STB is configuring the destination addr. Try loading nf_nat_rtsp with the option destaction=strip ... this will strip the destination= address regardless of it being a stunaddr or not. This may be what you need for the STB.

    This would make sense to me and be in line with how I'd feel it should function. Nf_conntrack_rtsp is handling the initial connection and is port-bound to the ports= parameter. And as I explained before, nf_nat_rtsp simply monitors the initial connection and opens ports as needed based on what the client/server negotiate for the stream. But if the destination addr is the problem, the initial connection never gets made. So while it may seem that nat_rtsp is not correctly handling the ports, it's failing because the destination addr from the STB is using a stunaddr that is incorrect due to your provider.. and being a stunaddr means that by default nat_rtsp doesn't touch it. Does this seem like a viable possibility to you? While I know the modules and coding, I fully admit I don't use RTSP for anything.. so my knowledge of it is sparse.

    I've been going through the code for both conntrack_rtsp and nat_rtsp. There is simply no coding in the nat module to accept a port parameter at install time. There is a large and clear chunk of code in conntrack_rtsp for doing so.. but not in nat. I'm wondering if the ports= parameter line in the nat modules info was an oversight coming over from conntrack and not actually meant to be there. Or, sense there are many IF statements based on kernel version in the code.. it may be that nat_rtsp accepts a port parameter when loaded into a later version kernel ( via library function or internal kernel call, as the coding to do so is not within nat_rtsp itself ).. but for our version it is tied to the port nf_conntrack is given. This is in reference to the latest version of code on their git.
     
    Last edited: Jun 20, 2017
  55. M_ars

    M_ars Network Guru Member




    @kille72 : In my opinion, I think a new release does make sense (if you say its ready), lots of changes and improvements, even if the firmware is not "100% bug free" - this will probably never happen
    I also think there a some intresting commits in tsyniks git, they look good :)
     
    Elfew and Wizardknight like this.
  56. M_ars

    M_ars Network Guru Member

    see
    http://www.linksysinfo.org/index.ph...-compiled-by-kille72.73397/page-4#post-287965

    wifi is not perfect with tomato and ARM-Router. MIPS-Router like RT-N66U, AC66U, RT-N16, E4200 and so on perform good in my opinion.
    Personally i use cheap tp link access points / repeater - they do give me a very good wifi performance and they cost almost nothing anymore...
     
  57. joksi

    joksi Serious Server Member


    Hi, first of thank you for taking a look at this.

    I've used Wireshark now and tried to verify this, and as I suspected VLC doesn't send the "destination" parameter (sniffing on LAN interface, so before any mangling by the modules)

    T 10.1.1.2:59238 -> 194.22.194.102:5055 [AP] SETUP rtsp://m-sp-vod1-b.iptv.telia.com:5055/1_30459740.tsv/ RTSP/1.0..CSeq: 4..User-Agent: LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27)..Transport: RAW/RAW/UDP;unicast;client_port=61816-61817....

    However, the STB does send "unicast;destination=10.1.1.58;client_port=XXXXX-XXXX" and even with destaction=strip nf_nat_rtsp doesn't seem to do it's job... I don't know if it really does this on default 554 port, because I have no real way of testing, or like I said before maybe the module is just faulty.
     
    Last edited: Jun 20, 2017
  58. tvlz

    tvlz LI Guru Member

  59. Elfew

    Elfew Network Guru Member

    I suggest to take tsynik changes and make a beta build for someone who can test. I dont use PPTP client :( The biggest issue here - a lot of minor commits from tsynik so it will be a challenge :(
     
  60. Elfew

    Elfew Network Guru Member

  61. kille72

    kille72 LI Guru Member

    Unfortunately, I don't have time to change and test PPTP, maybe someone else can fix and test it?
     
  62. kille72

    kille72 LI Guru Member

    Last edited: Jun 21, 2017
  63. tvlz

    tvlz LI Guru Member

    Fixes should apply to your fork too
     
  64. Sean B.

    Sean B. LI Guru Member

    You're welcome, hopefully we can get something figured out. When you tried the destaction=strip option for nat_rtsp, had you also loaded contrack_rtsp with the ports=5505 option? If not, I'd suggest trying it that way ( ie: load conntrack_rtsp ports=5505 first and then nat_rtsp destaction=strip second ) . If you did already try it that way, one long shot would be to load conntrack_rtsp using both ports.. so ports=554,5505 .
     
  65. kille72

    kille72 LI Guru Member

    I know...sadly enough, I don't have much time to work with Tomato in the summer...
     
    Last edited: Jun 21, 2017
  66. joksi

    joksi Serious Server Member

    The only order that the stream works when testing from VLC is modprobe nf_conntrack_rtsp ports=5055 first, and then modprobe nf_nat_rtsp destaction=strip. I tried with modprobe nf_conntrack_rtsp ports=554,5055 too. Unfortunately the destination-parameter is left intact...

    Below is from the STB with destination-parameter

    T 90.225.194.xxx:57739 -> 194.22.194.102:5055 [AP]
    SETUP rtsp://m-sp-vod1-b.iptv.telia.com:5055/2_30472492.tsv?type=PLAY&macAddress=00:02:9B:CC:C0:17&clientId=1111408632 RTSP/1.0.
    User-Agent: Kreatel_IP-STB.
    Transport: MP2T/H2221/UDP;unicast;destination=10.1.1.58;client_port=35476.
    x-properties: mac_address=00029BCCC017.
    x-mayNotify: .
    CSeq: 3.

    If you understand the code in the source, could you verify that it actually should/does remove the destination-parameter?


    if (dstact == DSTACT_STRIP || (dstact == DSTACT_AUTO && !is_stun)) {
    uint dstoff = (ptran-ptcp)+off;
    uint dstlen = nextfieldoff-off;
    char* pdstrep = NULL;
    uint dstreplen = 0;
    diff = dstlen;
    if (dstact == DSTACT_AUTO && !is_stun) {
    pr_debug("RTSP: replace dst addr\n");
    dstoff += 12;
    dstlen -= 13;
    pdstrep = szextaddr;
    dstreplen = extaddrlen;
    diff = nextfieldoff-off-13-extaddrlen;
    }

    To me it seems like the ports are getting opened, obviously, but the destaction variable or the code doesn't work...
    Question is, is the source code found online actually the one in Tomato firmware?
     
  67. skoub

    skoub Network Guru Member

    The guy said that the range is not good on the 5ghz but he doesn't talk about the speed. Since that my router is in the same room as my portable, i do not thing i have a range problem. Or maybe it is all related? So everyone on asus router have this problem that the 5ghz is very slow compared to the original firmware?
     
  68. Sean B.

    Sean B. LI Guru Member

    No, my 5ghz is great, using an Asus RT-AC68P. I get around 50MB/s within the house.. drops down to about 30 in the garage. 5ghz will not have the range 2.4ghz does though. This is not due to any brand of hardware or firmware version, rather the nature of electromagnetic radiation. A 5ghz RF transmission has a shorter wavelength than one at 2.4ghz, a shorter wavelength means reduced ability to penetrate objects and being more susceptible to having its polarization changed by them. Make sure your wireless settings are correctly matched to the speed your wireless devices can operate at in Basic->Network and Advanced->Wireless. The most important are Wireless Network Mode ( "N Only" if no clients use a protocol below N/AC ), Channel ( most 5ghz channels are ok as they aren't yet crowded like 2.4ghz ), Channel width ( 40/80mhz for N, 80mhz for AC ), Security ( WPA/WPA2 Personal ), Encryption ( AES ), WMM ( Enabled, with NO ACK and APSD disabled ), 802.11n Preamble ( "Green field" if no clients use a protocol below N/AC ), Wireless Multicast Forwarding ( Disabled unless you really need it, and if you do need it I'd suggest enabling Efficient Multicast Forwarding in Advanced->Routing with it ). Others are usually fine at defaults, but trial and error can yeild a little better or a little worse. Keep in mind that having clients connected using older/slower protocols such as B/G/Draft N will reduce the speeds any faster clients can achieve, and that the security settings I mentioned directly effect speed and not just security.
     
    Last edited: Jun 21, 2017
  69. Sean B.

    Sean B. LI Guru Member

    It's close to it. The only differences are the online source contains additions in regards to newer kernel versions.. here's a section from the diff I did:

    Code:
    +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
    +    if (nf_inet_addr_cmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3,
    +                 &ct->master->tuplehash[exp->dir].tuple.src.u3)) {
    +        range.min_addr = range.max_addr
    +            = ct->master->tuplehash[!exp->dir].tuple.dst.u3;
    +#else
    +    if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip ==
    +        ct->master->tuplehash[exp->dir].tuple.src.u3.ip) {
    +        range.min_ip = range.max_ip
    +            = ct->master->tuplehash[!exp->dir].tuple.dst.u3.ip;
    +#endif
    So there's no difference between the latest git coding and the coding in Tomato with regards to nf_nat_rtsp accepting a ports= option at install time. Or anything at all that would apply to our kernel version for that matter.

    Do you use IRC at all? At some point if possible I'd like to chat with you real-time and make sure I've got everything straight here as far as your symptoms + situation with providers stun issue and more about your STB. The time delay with forum posts can make it hard to retain the full picture.

    What IP is that? Or is it unknown?
     
  70. Magnus

    Magnus Network Newbie Member

    Hello! How can i run adblock monitor? thx a lot!

    P/S The tomato-RT-AC56U-ARM--2017.2b39-kille72--AIO-64K.zip worked wery well.
     
  71. joksi

    joksi Serious Server Member

    Okey, I see.
    Unfirtunately no IRC.

    10.1.1.58 is the LAN IP of my STB. So that's the part that nf_nat_rtsp *should* strip, but doesn't...
     
  72. Sean B.

    Sean B. LI Guru Member

    What make/model is your STB?
     
  73. joksi

    joksi Serious Server Member

  74. Sean B.

    Sean B. LI Guru Member

    Last edited: Jun 21, 2017
  75. joksi

    joksi Serious Server Member

    Right now RTSP is enabled in GUI, but I have unloaded the modules manually and then loaded them again with the ports-parameter.
     
  76. Sean B.

    Sean B. LI Guru Member

    May try loading nat_rtsp with the stunaddr=YOUR-WAN-IP . See if that makes it hit on the destination address. I'm at a loss for how to continue diagnosing this, as I don't have a way to simulate your STB that I know of, and reading code isn't getting anywhere as it appears that it should be working. I'd need to start simulating the event and doing some debug logging/wireshark etc. Is there any type of GUI interface for the STB that may allow for configuring options related to rtsp?

    **EDIT** When you tried the destaction=strip and stated the address is remaining.. you changed your Wireshark capture interface over to the WAN correct?
     
  77. Sean B.

    Sean B. LI Guru Member

    @joksi , I may have asked this already but you do have nat loopback enabled with target set as masquerade in Advanced->Firewall correct?
     
  78. joksi

    joksi Serious Server Member

    I'll write you a PM
     
  79. kille72

    kille72 LI Guru Member

    Can you explain exactly what you are looking for? Debug Mode?
     
  80. kille72

    kille72 LI Guru Member

    @tvlz: can you please send me this commit "ARM:Fix ingress QOS, both IPv4 & IPv6"? I can do it manually, but it would be great if you could send it to me. Thanks!
     
  81. Nitin Vaid

    Nitin Vaid Connected Client Member

    Can I limit the download speed for specific connected wireless device?
     
  82. kille72

    kille72 LI Guru Member

    Yes, use Bandwidth Limiter.
     
    Nitin Vaid likes this.
  83. Nitin Vaid

    Nitin Vaid Connected Client Member

    thanks what i want is to give the top most priority to my connected device that can be also done ?
     
  84. kille72

    kille72 LI Guru Member

    Yes, but keep in mind that you must set priority for all clients.

    BL.png
     
  85. pedro311

    pedro311 Reformed Router Member

    Already done ;) Just wait a sec for my commit.
     
    Elfew and kille72 like this.
  86. kille72

    kille72 LI Guru Member

    Great job @pedro311!
     
    M_ars and pedro311 like this.
  87. skoub

    skoub Network Guru Member

    I have done everything that you've said but without any succes. I only get 15mb download speed from my nas compared to 42mb with the original firmware. I tried to play with other settings without any luck.

    I just don't get it! Any other setttings i should look at?
     
  88. skoub

    skoub Network Guru Member

    i've just found a little bug i think. The channel width used was 60Mhz in the Summary page but was configured to 80Mhz in the settings with Channel to Auto. For some reason, the Auto was using a channel that can't use the full 80Mhz. I had to explicitly select the channel 149 or 36 to have a real 80Mhz and now i can get 27Mb for my download speed on my nas instead of 15Mb. This is not near my 42Mb with the original firmware yet though.
     
  89. Nitin Vaid

    Nitin Vaid Connected Client Member

    In Buttons/Led Under Administration

    what is this custom script for"[ $1 -ge 20 ] && telnetd -p 233 -l /bin/sh"
     
  90. M_ars

    M_ars Network Guru Member

  91. Magnus

    Magnus Network Newbie Member

  92. Magnus

    Magnus Network Newbie Member

    By the way. I want to say that the speed is smb 25MB\s, and the speed of ftp 36MB\s оn USB3.0 by 1000LAN. (

    Between the router and Openelec(Linux)) .

    Between the router and Windows 10 speed 36-40MB\S. Offtopic: How to speed up SMB?
     
  93. Sean B.

    Sean B. LI Guru Member

    Under Advanced->Miscellaneous enable CTF and retest speeds.
     
  94. kille72

    kille72 LI Guru Member

    Total collapse with SDK7 after all updates, no problem with SDK6. Can someone help me?

    https://bitbucket.org/kille72/tomato-arm-kille72/commits/all

    Code:
       rc 
    make[5]: Entering directory '/home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/router/rc'
     [rc] CC rc.o
     [rc] CC init.o
    init.c: In function ‘wl_defaults’:
    init.c:112:15: warning: unused variable ‘max_mssid’
    init.c:111:6: warning: unused variable ‘subunit_x’
    init.c:109:12: warning: unused variable ‘subunit’
    init.c:107:31: warning: unused variable ‘pssid’
    init.c:107:7: warning: unused variable ‘pprefix’
    init.c: In function ‘find_sercom_mac_addr’:
    init.c:453:2: warning: pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
    /home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/../arm-brcm-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:332:12: note: expected ‘char * __restrict__’ but argument is of type ‘unsigned char *’
    init.c:454:2: warning: pointer targets in passing argument 1 of ‘fopen’ differ in signedness
    /home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/../arm-brcm-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:239:14: note: expected ‘const char * __restrict__’ but argument is of type ‘unsigned char *’
    init.c:459:4: warning: pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
    /home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/../arm-brcm-linux-uclibcgnueabi/sysroot/usr/include/stdio.h:332:12: note: expected ‘char * __restrict__’ but argument is of type ‘unsigned char *’
    init.c:460:3: warning: pointer targets in passing argument 2 of ‘nvram_set’ differ in signedness
    /home/kille72/tomato-arm-kille72/release/src-rt-7.x.main/src/include/bcmnvram.h:154:12: note: expected ‘const char *’ but argument is of type ‘unsigned char *’
    init.c:461:3: warning: pointer targets in passing argument 1 of ‘invalid_mac’ differ in signedness
    init.c:443:19: note: expected ‘const char *’ but argument is of type ‘unsigned char *’
    init.c: In function ‘init_nvram’:
    init.c:4573:20: error: invalid storage class for function ‘tune_min_free_kbytes’
    init.c:4587:13: error: invalid storage class for function ‘sysinit’
    init.c:4932:1: error: expected declaration or statement at end of input
    Makefile:212: recipe for target 'init.o' failed
    make[5]: *** [init.o] Error 1
    make[5]: Leaving directory '/home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/router/rc'
    Makefile:2958: recipe for target 'rc' failed
    make[4]: *** [rc] Error 2
    make[4]: Leaving directory '/home/kille72/tomato-arm-kille72/release/src-rt-6.x.4708/router'
    Makefile:127: recipe for target 'all' failed
    make[3]: *** [all] Error 2
    make[3]: Leaving directory '/home/kille72/tomato-arm-kille72/release/src-rt-7.x.main/src'
    Makefile:1106: recipe for target 'bin' failed
    make[2]: *** [bin] Error 2
    make[2]: Leaving directory '/home/kille72/tomato-arm-kille72/release/src-rt-7.x.main/src'
    Makefile:1125: recipe for target 'z' failed
    make[1]: *** [z] Error 2
    make[1]: Leaving directory '/home/kille72/tomato-arm-kille72/release/src-rt-7.x.main/src'
    Makefile:1204: recipe for target 'ac3200z' failed
    make: *** [ac3200z] Error 2
     
    Last edited: Jun 23, 2017
  95. Magnus

    Magnus Network Newbie Member

    Thank you very much!!!
    It's good to have a smart brain, like yours.
     
    Sean B. likes this.
  96. Nitin Vaid

    Nitin Vaid Connected Client Member

    i use the button on my R7000 to disable wifi only it turn of the wifi but when i want to re enable it it wont turn on no matter how many times i press the button

    and other thing what i want to ask is is it possible via custom scrip to disable only 2.4ghz wifi?
     
  97. rs232

    rs232 Network Guru Member

    can you please open a new thread for generic questions?

    Thanks
     
  98. Edrikk

    Edrikk Network Guru Member

    Can't define a static function inside another function. Based on the error this would be likely because of


    /release/src-rt-6.x.4708/router/rc/init.c

    Code:
    #if defined(LINUX26) && defined(TCONFIG_USB)
    static inline void tune_min_free_kbytes(void)
    {
        struct sysinfo info;
        memset(&info, 0, sizeof(struct sysinfo));
        sysinfo(&info);
        if (info.totalram >= 55 * 1024 * 1024) {
            // If we have 64MB+ RAM, tune min_free_kbytes
            // to reduce page allocation failure errors.
            f_write_string("/proc/sys/vm/min_free_kbytes", "8192", 0, 0);
        }
    }
    #endif
    
    

    I believe the #if defined && defined pieces have to be broken down into two #ifdef statements.

    Code:
    #ifdef LINUX26
    #ifdef TCONFIG_USB
    static inline void tune_min_free_kbytes(void)
    {
        struct sysinfo info;
        memset(&info, 0, sizeof(struct sysinfo));
        sysinfo(&info);
        if (info.totalram >= 55 * 1024 * 1024) {
            // If we have 64MB+ RAM, tune min_free_kbytes
            // to reduce page allocation failure errors.
            f_write_string("/proc/sys/vm/min_free_kbytes", "8192", 0, 0);
        }
    }
    #endif
    #endif
    
    This is because #ifdef checks whether a macro by that name has been defined, #if evaluates the expression.

    Beyond this not sure.
     
  99. kille72

    kille72 LI Guru Member

    Unfortunately, it did not work :( Check the init.c files.

    I don't know when it stopped working. The last SDK7 that I compiled was 2017.1.
     

    Attached Files:

    Last edited: Jun 23, 2017
  100. kille72

    kille72 LI Guru Member

    I think I've found the bug, trying to compile an SDK7 image now...

    Code:
    +        }
    +        break;
    
        case MODEL_AC15:
            mfr = "Tenda";
            name = "AC15";
            features = SUP_SES | SUP_AOSS_LED | SUP_80211N | SUP_1000ET | SUP_80211AC;
    #ifdef TCONFIG_USB
            nvram_set("usb_uhci", "-1");
    #endif
            if (!nvram_match("t_fix1", (char *)name)) {
                nvram_set("vlan1hwname", "et0");
                nvram_set("vlan2hwname", "et0");
                nvram_set("lan_ifname", "br0");
                nvram_set("landevs", "vlan1 wl0 wl1");
                nvram_set("lan_ifnames", "vlan1 eth1 eth2");
                nvram_set("wan_ifnames", "vlan2");//check different
                nvram_set("wan_ifnameX", "vlan2");//check not exist
                nvram_set("wandevs", "vlan2");//check different
                nvram_set("wl_ifnames", "eth1 eth2");//check not exist
                nvram_set("wl_ifname", "eth1");//check not exist
                nvram_set("wl0_ifname", "eth1");
                nvram_set("wl1_ifname", "eth2");
    
                // fix WL mac`s
    
    //            nvram_set("wl0_hwaddr", nvram_safe_get("0:macaddr"));//replace stars
    //            nvram_set("wl1_hwaddr", nvram_safe_get("1:macaddr"));//replace stars
    
                // usb3.0 settings
                nvram_set("usb_usb3", "1");//check not exist
                nvram_set("xhci_ports", "1-1");//check not exist
                nvram_set("ehci_ports", "2-1 2-2");//check not exist
                nvram_set("ohci_ports", "3-1 3-2");//check not exist
    
                // force wl1 settings
                nvram_set("0:ccode", "#a");
                nvram_set("1:ccode", "#a");
                nvram_set("wl0_country_code", "#a");
                nvram_set("wl1_country_code", "#a");
                nvram_set("wl0_txpwr","0");
                nvram_set("wl1_txpwr","0");
                nvram_set("wl1_chanspec", "100/40");
                nvram_set("wl1_nctrlsb", "lower");
    
                nvram_set("1:rpcal5gb0", "0x7052"); //in CFE x is capitalized??
                nvram_set("1:rpcal5gb1", "0x7F52"); //in CFE x is capitalized??
                nvram_set("1:rpcal5gb2", "0x8154"); //in CFE x is capitalized??
                nvram_set("1:rpcal5gb3", "0x8B66"); //in CFE x is capitalized??
                // From 868L
                nvram_set("1:mcsbw205ghpo", "0xBA768600");
                nvram_set("1:mcsbw205glpo", "0xBA768600");
                nvram_set("1:mcsbw205gmpo", "0xBA768600");
                nvram_set("1:mcsbw405ghpo", "0xBA768600");
                nvram_set("1:mcsbw405glpo", "0xBA768600");
                nvram_set("1:mcsbw405gmpo", "0xBA768600");
                nvram_set("1:mcsbw805ghpo", "0xBA768600");
                nvram_set("1:mcsbw805glpo", "0xBA768600");
                nvram_set("1:mcsbw805gmpo", "0xBA768600");
                nvram_set("1:maxp5ga0", "106,106,106,106");
                nvram_set("1:maxp5ga1", "106,106,106,106");
                nvram_set("1:maxp5ga2", "106,106,106,106");
                nvram_set("1:pa5ga0", "0xFF4C,0x1808,0xFD1B,0xFF4C,0x18CF,0xFD0C,0xFF4A,0x1920,0xFD08,0xFF4C,0x1949,0xFCF6");
                nvram_set("1:pa5ga1", "0xFF4A,0x18AC,0xFD0B,0xFF44,0x1904,0xFCFF,0xFF56,0x1A09,0xFCFC,0xFF4F,0x19AB,0xFCEF");
                nvram_set("1:pa5ga2", "0xFF4C,0x1896,0xFD11,0xFF43,0x192D,0xFCF5,0xFF50,0x19EE,0xFCF1,0xFF52,0x19C6,0xFCF1");
    
            }
            break;
     
    gffmac likes this.

Share This Page