#avr | Logs for 2015-05-11

Back
[04:59:19] <mzbotre> Hi! Total novice to sending instructions to a microcontroller. I want to use avr-libc as a compiler for using an Arduino uno for mostly i/o + direct pin register. I have avrdude as the only autocomplete in this crappy linux I'm using.
[04:59:57] <mzbotre> Should there be anything I should worry about, especially when it comes to ruining my board and losing a week's worth of work? :(
[05:01:27] <jacekowski> mzbotre: how are you going to program it?
[05:10:16] <mzbotre> jacekowski: I have a couple of hopefully TRNG chua circuits that I want to collect information from. I have one digital pin that should do the input well, but I need to use actual C here becuase arduino's java marshals don't do it right.
[05:11:43] <mzbotre> So hopefully define the pin register, allocate memory after it for unsigned 32 bit types, and then populate a ridiculous number of samples (but not run out of memory, so just sending file IO instructions really).
[05:15:57] <mzbotre> So I plan to solve these by smart writes to an SD card or throw data out ethernet and realloc old memory by loop. Would be good to be able to just write on streams through my USB device...(arduino uno)
[08:08:45] <LeoNerd> Does anyone have some sort of handy reference for pointing out what hardware peripherals are compatible between AVR chips?
[08:09:14] <LeoNerd> E.g. if I read the datasheets closely enough I notice that Timer0 on a tiny84 vs. mega328p seem to be identical, to the point that I can just use the same C code for each just fine
[08:15:12] <mandrake`> hi everybody
[08:15:43] <mandrake`> I may have a question that may get you angry at me, and I'm sorry for that, but I can't find a precise answer online
[08:16:18] <mandrake`> I'm trying to understand wether FMUL, FMULS and FMULSU are actually different operations or not
[08:17:01] <mandrake`> I already figured out that FMUL is in fact an integer multiplication with a left shift, and I get the fixed point stuff, but I'm still not sure about the signed versions
[08:17:02] <LeoNerd> I imagine they differ in the same way that MUL/MULS/MULSU do
[08:19:05] <mandrake`> that's a good point actually
[08:19:12] <mandrake`> I think I need to make some tries
[08:55:03] <hypermagic> hii
[08:55:26] <hypermagic> would you use double precision variable in an avr? :/ or just a fixed point integer instead ?
[08:56:23] <hypermagic> ofc double precision is no good for any incremental looping because of the rounding errors
[08:57:55] <LeoNerd> I don't think I've ever used a floating-point variable for /anything/ on an AVR
[08:58:32] <hypermagic> it just sounds simple to use a floatingpoint variable, i did it all the time on pc
[09:00:07] <hypermagic> LeoNerd, if you use c then it might be simple to port your code from a device to another
[09:00:49] <hypermagic> no idea what devices' peripherials are exactly the same
[09:01:20] <LeoNerd> I just don't think I've ever wanted to write something on an AVR and thought to myself "I can solve that with a floating point variable"
[09:01:26] <LeoNerd> That sort of problem just doesn't come up
[09:01:42] <hypermagic> :)
[09:05:08] <hypermagic> LeoNerd, how do you do fixedpoint calculations on avr?
[09:05:26] <hypermagic> first you write your calculation routines no?
[09:07:12] <LeoNerd> calculation routines?
[09:11:27] <hypermagic> fixedpoint is not std c
[09:11:50] <hypermagic> i found this now for example http://sourceforge.net/projects/fpmlib/?source=recommended
[09:11:53] <LeoNerd> OK lets attack this from a new direction
[09:12:08] <LeoNerd> What are you using these values for? What sort of program are you writing that needs them?
[09:12:21] <hypermagic> nearly everything ?
[09:12:26] <LeoNerd> OK
[09:12:45] <FL4SHK> Are you guys using C or C++?
[09:12:48] <LeoNerd> So.. my latest program is a DMX receiver that controls a bunch of WS2812 LEDs, and also a couple of relay outputs to drive some fans and a smoke machine
[09:12:54] <hypermagic> motion estimation, absolute position
[09:12:59] <LeoNerd> Nowhere anywhere in that program do I need any floats
[09:13:10] <FL4SHK> If using C++, you could use a wrapper class for fixed-point numbers, with operator overloading for operations and such
[09:13:21] <hypermagic> adc value calculations
[09:13:43] <LeoNerd> The ADC gives a 10-bit integer result
[09:14:03] <hypermagic> fixedpoint will do ofc for a 4 digit display...
[09:14:48] <hypermagic> yes
[09:15:52] <hypermagic> FL4SHK, i only do C :/
[09:16:40] <hypermagic> c++ is not for mcu
[09:17:06] <FL4SHK> I've used a subset of C++ on my Arduino boards before that is still more than just C
[09:17:14] <hypermagic> fine if you have much resources to waste
[09:17:26] <FL4SHK> no inheritance, virtual functions, etc.
[09:17:38] <LeoNerd> I'm only using C++ for one project currently because it's the quickest way for me to get USB HID in a hurry; as I *need* it by next weekend
[09:17:44] <FL4SHK> Not very much more than C in terms of how I use it
[09:17:48] <LeoNerd> (So I can just use the Arduino bits)
[09:17:53] <LeoNerd> But most of my program is actually C, not C++
[09:18:06] <FL4SHK> C++ != STL btw
[09:18:10] <FL4SHK> I don't use the STL at all :P
[09:18:22] <LeoNerd> I'm well aware
[09:18:29] <FL4SHK> Well hypermagic might not have been :V
[09:18:47] <FL4SHK> https://github.com/fl4shk/arduinogbdump/
[09:19:06] <FL4SHK> I used the STL in the Linx program I wrote but that's not running on the Arduino
[09:19:09] <hypermagic> flai generally do not prefer c++ for anything
[09:19:14] <hypermagic> FL4SHK,
[09:19:20] <FL4SHK> That's fine. Use what you like.
[09:19:36] <FL4SHK> I'm mostly fine with C honestly. I just prefer C++.
[09:20:02] <mzbotre> It's the java marshalls that kill it for e
[09:20:10] <hypermagic> maybe i'd like it if it weren't such a resource waste
[09:20:15] <mzbotre> seriously
[09:20:20] <hypermagic> sounds comfortable to define custom operators
[09:20:45] <hypermagic> the C syntax is not that flexible
[09:21:00] <FL4SHK> Custom operators are very nice for things like mathematical vectors and such
[09:21:11] <FL4SHK> And matrices
[09:21:14] <hypermagic> and whatever
[09:21:39] <hypermagic> and not having the function(parameter) analogy
[09:21:49] <mzbotre> especially arrays, the arduino IDE can barely even handle uint32
[09:22:08] <FL4SHK> What were you using 32-bit integers for on an Arduino?
[09:22:34] <hypermagic> FL4SHK, c++ targets objects
[09:22:37] <mzbotre> hoping to see if I could get TRNG data from a chua circuit
[09:22:46] <hypermagic> you can do anything in C too but with more writing
[09:22:58] <FL4SHK> Oh yes. C is Turing complete, therefore it can do anything :P
[09:23:31] <hypermagic> C could be bastardized more if macro were more flexible in gcc :)
[09:23:46] <FL4SHK> C would be much more interesting to me if the macros were more like assembly-style macros
[09:23:48] <hypermagic> do you like m4 ?
[09:23:53] <hypermagic> ;)
[09:23:56] <LeoNerd> There's a few things I would like in C that would be piss-easy, that aren't
[09:23:56] <FL4SHK> I've looked into it before
[09:24:05] <FL4SHK> Didn't learn to use it totally yet
[09:24:06] <hypermagic> https://www.gnu.org/software/m4/manual/m4.html#Invoking-m4
[09:24:15] <FL4SHK> Yeah, I'm aware of what it is
[09:24:21] <LeoNerd> One is named loops: TASKS: for(int tid = 0; tid < N_TASKS; tid++) { ..... continue TASKS; .... } <== would be nice
[09:24:24] <hypermagic> i believe you could make a very flexible coding style with m4 - C
[09:24:30] <LeoNerd> So then you can put 'continue' in another loop/switch/etc...
[09:24:53] <FL4SHK> m4 would be nice to use with a very basic assembler too, if the assembler didn't have a decent macro system built in.
[09:25:01] <hypermagic> hehe
[09:25:11] <hypermagic> but it is still a amcro
[09:25:19] <hypermagic> C does optimizations on your asm
[09:25:48] <hypermagic> also c is portable
[09:26:07] <FL4SHK> The arguments you're making are partly why I usually use C++ honestly
[09:26:14] <FL4SHK> There are parts of C++ I'd never even think of using on an AVR though
[09:26:26] <hypermagic> i ported some of my own functions from x86_64 onto 8 bit avr for example
[09:26:45] <hypermagic> in C it was not a big deal
[09:27:17] <FL4SHK> Yeah. I'm well aware of the portability of C. The fact that it's easier to make a C compiler than a C++ compiler is a good reason to use C for something that you want to run on as many CPUs as possible.
[09:27:31] <FL4SHK> This is why it's good that the Linux kernel, for example, is written in C.
[09:27:59] <hypermagic> i'd argue with linux kernel's goodness but ok :)
[09:28:22] <FL4SHK> I was only saying that it's good that it's written in C. Not sure what the code quality is like :P
[09:28:59] <hypermagic> i think if they write linux kernel in C++ it will be a nightmare
[09:30:02] <hypermagic> https://gcc.gnu.org/gcc-4.8/changes.html
[09:30:10] <FL4SHK> It'd probably be harder to get people to follow coding standards to avoid certain parts of C++. I'd definitely suggest avoiding the STL if using C++ for a kernel.
[09:30:16] <hypermagic> gcc gets written in C++ lol
[09:30:22] <FL4SHK> Probably would be best to avoid new and delete also
[09:30:29] <hypermagic> i was not thinking of getting any newer than 4.7.4
[09:30:35] <hypermagic> it is still in C
[09:30:57] <FL4SHK> Eh. I'm not super picky about the language in which the tools I use are written.
[09:31:14] <FL4SHK> They could be written in Fortran and I wouldn't mind.
[09:31:36] <hypermagic> i'd rather not use a compiler that was written in bashscript or haskell
[09:34:40] <hypermagic> c++ in theory is more stable because you use objects what do you think about this?
[09:34:55] <hypermagic> so you have to worry less about memory allocations
[09:40:04] <FL4SHK> oh
[09:40:16] <FL4SHK> Yeah I guess I'd rather not use a compiler written in bashscript or haskell :P
[09:40:29] <FL4SHK> The former would be interesting to see though
[09:41:17] <FL4SHK> In C++, memory allocations can be automated, but you can control how it's automated
[09:41:33] <FL4SHK> No need for a garbage collector because objects have methods for when they're created or destroyed
[09:42:13] <FL4SHK> That said, on an embedded system such as an AVR, I generally don't do any memory allocation other than stack/static
[09:43:49] <FL4SHK> The thing about C++ is that objects can be a thin abstraction above structs and global functions if you want them to be.
[09:45:08] <FL4SHK> That's basically how I use C++ on an AVR.
[09:47:00] <FL4SHK> Basically I'm not doing that much that C can't already do. It's just slightly nicer syntax as far as I'm concerned.
[09:47:15] <FL4SHK> Hopefully I answered your questions well enough
[09:49:32] <hypermagic> FL4SHK, you can create objects and methods in C too, it will just make your hands tired to type all that :)
[09:51:21] <hypermagic> C will just allow you to go lower level in defining what you want to do exactly, i can imagine c++ on an avr doing calculations slower on same mcu
[09:52:15] <FL4SHK> Well, actually, C++ is mostly a superset of C, and g++ at least is nearly or exactly as good as gcc is for optimizing
[09:52:36] <hypermagic> FL4SHK, you have not had weird problems with your c++ code yet? like stack overflows, ran out of memory, and interrupt skips ?
[09:52:45] <FL4SHK> Nah
[09:53:06] <hypermagic> resources are very limited on an avr...
[09:53:20] <FL4SHK> The AVRs I have all have at least 2 kiB of RAM
[09:53:24] <FL4SHK> That's more than enough
[09:53:41] <hypermagic> are you surea bout that? :)
[09:53:48] <FL4SHK> Yeah
[09:53:51] <FL4SHK> https://github.com/fl4shk/arduinogbdump/ I linked this earlier
[09:53:58] <hypermagic> i did run out of ram with my last project in C on a mega168
[09:54:07] <FL4SHK> Huh
[09:54:20] <hypermagic> and it started to act weird... you can never know if it happens
[09:54:48] <FL4SHK> Well, most of the RAM I was using was for an ~1000 bytes buffer
[09:54:51] <hypermagic> so the solution was to only use the strings from flash
[09:55:01] <FL4SHK> Maybe your project was larger than mine
[09:55:07] <hypermagic> C filled my ram with strings :)
[09:55:19] <FL4SHK> I wasn't using strings very much at all
[09:55:31] <hypermagic> oh ;)
[09:56:22] <FL4SHK> I wouldn't use std::string on an AVR
[09:56:58] <hypermagic> so you throw away the easy part from c++ ? :)
[09:57:07] <hypermagic> how about your simple objects?
[09:57:17] <FL4SHK> I used like, one or two objects
[09:57:17] <hypermagic> you make a few and 1kB ram is filled
[09:57:26] <FL4SHK> That depends on the object
[09:57:57] <FL4SHK> I didn't make very many objects
[09:58:38] <hypermagic> i could use 2x256 byte buffer for storing datastream traffic and then store into eeprom using C :)
[09:59:54] <hypermagic> 3 month work in 15kB flash btw
[10:00:35] <hypermagic> it was nice to see how many things can fit in 15kB flash using C
[10:00:51] <hypermagic> and did not even optimize the code yet
[10:00:53] <FL4SHK> I didn't even fill 10 kB with the program I linked
[10:01:15] <FL4SHK> And much of that is due to the Arduino bootloader/IDE code
[10:01:32] <hypermagic> why do you want arduweenie btww? :)
[10:01:47] <FL4SHK> Those are what were available at RadioShack
[10:01:55] <FL4SHK> IOW I paid too much for them :P
[10:02:29] <hypermagic> i mean
[10:02:46] <hypermagic> you can program that thing at hardware level
[10:03:00] <hypermagic> i made my own board, but that does not matter
[10:03:04] <FL4SHK> I don't have a programmer
[10:03:15] <hypermagic> i made a programmer from an old printer cable
[10:03:23] <hypermagic> it is called dapa
[10:03:37] <FL4SHK> I do kind of want to get into plain old microcontrollers
[10:04:07] <FL4SHK> printer cable, though
[10:04:14] <FL4SHK> I don't have a parallel port
[10:04:37] <hypermagic> FL4SHK, check this out: ) http://hackaday.com/2010/10/25/avr-programming-02-the-hardware/
[10:05:00] <hypermagic> well you may find an old pc near some trash can i think that has one
[10:05:22] <FL4SHK> I'd like a USB <-> Parallel port adapter but I've heard those are iffy
[10:05:28] <hypermagic> but there are usb programmers that you can even buy complete like avrisp
[10:06:19] <hypermagic> http://www.fischl.de/usbasp/
[10:06:23] <hypermagic> or usbasp
[10:08:06] <hypermagic> and you can use dapa and usbasp with avrdude programmer software
[10:08:47] <hypermagic> you can even make custom bootloader if you want anyway and flash in anything you want
[10:09:49] <hypermagic> hehehe http://www.instructables.com/id/AVR-ISP-programmer/
[10:09:55] <hypermagic> comport avr programmer cable
[10:10:05] <FL4SHK> That's cool
[10:17:28] <hypermagic> http://avrprogrammers.com/programmers/all-serial-port
[11:04:01] <LeoNerd> Inline assembly. How do I get the compiler to allocate me some working registers for my code...?
[11:04:07] <LeoNerd> I need more than just __tmp_reg__ but any register will do
[11:04:12] <LeoNerd> Do I just pass in 0 as an input?
[11:18:00] <LeoNerd> Well, this is annoying. My manually-unrolled WS2812 driver loop is now so long, that BRNE can't jump back to the start of it
[11:18:39] <LeoNerd> But if I use BREQ .+2 to skip over a subsequent JMP instruction that can reach that far, that adds an extra 2 cycles of timing
[11:18:51] <LeoNerd> I wonder if the LEDs will cope. If not I'm going to have to make it messier again
[11:47:05] <hypermagic> LeoNerd, you set the clobbered register list for gcc if you want to do asm
[11:47:43] <hypermagic> if you set -O3 then gcc might prefer using more registers btw.
[11:48:36] <hypermagic> there is also switch for C code for preferring variable as register instead of memory
[11:51:29] <LeoNerd> hypermagic: if I want to invent register names I put them in the clobber list, yes
[11:51:40] <LeoNerd> How do I say "hey, just make me a new register, I don't really care what it is"
[11:51:50] <LeoNerd> http://pastie.org/10182807 <== see my [byte] input constraint here
[11:53:40] <LeoNerd> Notice how currently I just pass in the value 0 because, really I don't care. It works, but it does add an extra unnecessary initialisation instruction
[12:07:40] <hypermagic> LeoNerd, you use C :)
[12:07:46] <LeoNerd> hypermagic: Er..
[12:07:55] <LeoNerd> Please to be observing the per-cycle timing requirements of the driver
[12:08:03] <hypermagic> gcc will invent the required register for your variable
[12:08:15] <LeoNerd> Furthermore, observe that shortly I'll be ripping out some of those NOPs and replacing them with UART driver code instead
[12:08:18] <hypermagic> it may even be no register at all if gcc optimizes it out
[12:08:36] <hypermagic> oh
[12:08:56] <LeoNerd> Basically: I want to talk ws2812 and DMX at the same time
[12:09:01] <LeoNerd> I don't think anyone else has ever done this before
[12:09:17] <hypermagic> well what is problem about using a defined variable name ?
[12:09:26] <hypermagic> you pick one and clobber it.
[12:09:40] <LeoNerd> It doesn't want to live on the stack. It must be a register
[12:09:43] <LeoNerd> I don't care which register
[12:10:04] <LeoNerd> As I said, theabove code works fine, it just has a single initialisation instruction where that's not necessary. No big problem, I just wondered
[12:10:18] <hypermagic> you can say gcc not to use that one and let you handle it in your inline asm code
[12:10:35] <LeoNerd> But then I have to invent a register
[12:10:44] <LeoNerd> I could use r12, say. Do I want 12?
[12:10:49] <LeoNerd> Why would I pick 12 rather than anything else?
[12:12:33] <hypermagic> http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
[12:12:38] <LeoNerd> Yesyes
[12:12:43] <LeoNerd> I've read it. Repeatedly
[12:12:54] <hypermagic> :"=r"(b) /* output */
[12:12:54] <hypermagic> :"r"(a) /* input */
[12:12:54] <hypermagic> :"%eax" /* clobbered register */
[12:13:17] <LeoNerd> An output register..?
[12:13:33] <LeoNerd> Yes, there's output, input, clobbered. I see no "internal temporary"
[12:13:42] <hypermagic> For the time being, "r" says to GCC to use any register for storing the operands.
[12:13:47] <hypermagic> you want this no?
[12:14:15] <LeoNerd> For storing the operatnd
[12:14:19] <LeoNerd> I'm not passing in an operande
[12:14:25] <LeoNerd> AGAIN go read my paste. See the zero I passed in
[12:14:37] <LeoNerd> Line 184, [byte] "a"(0)
[12:14:38] <LeoNerd> That zero
[12:15:29] <LeoNerd> That zero causes an extra instruction to be generated in the output
[12:15:54] <LeoNerd> So in my disassembly, it happens to have picked r16
[12:16:17] <LeoNerd> ldi r16, 0x00 <== it generated this instruction first
[12:16:29] <LeoNerd> Technically I don't need that, as the first thing I do with r16 is LD r16, Z+
[12:16:31] <hypermagic> yes well shit happens
[12:16:57] <hypermagic> you can not count function call cycles with c
[12:17:00] <LeoNerd> What really I need is [byte] "a"(Dear GCC don't bother initialising this because I'm just going to trash it anyway)
[12:17:09] <hypermagic> i made critical functions macro
[12:17:11] <hypermagic> :)
[12:17:56] <hypermagic> also made a function that takes an address as parameter instead of returning value because it was a few ticks faster
[12:18:58] <hypermagic> it was fine, but let's say you get 80MHz max rate of function instead of 60MHz
[12:22:01] <hypermagic> sometimes this might be useful too https://gcc.gnu.org/onlinedocs/gcc/Local-Reg-Vars.html#Local-Reg-Vars
[12:22:22] <LeoNerd> " with a specified register"
[12:22:30] <hypermagic> :)
[12:22:30] <LeoNerd> I'm not sure how many more times I can say this any clearer
[12:22:41] <LeoNerd> ==> I do not want to decide which register. I want gcc to pick the register for me. <==
[12:22:50] <hypermagic> oh it does
[12:23:02] <hypermagic> it will not guarantee anything fix
[12:23:47] <hypermagic> also note that compiling with -o3 likes registers more too
[12:23:52] <LeoNerd> *headdesk*
[12:24:07] <LeoNerd> OK I'm increasingly coming to the idea that you don't actually understand the problem I'm talking about so I'm going to stop listening now
[12:28:00] <hypermagic> i gugled on it lol
[12:28:02] <hypermagic> http://www.adafruit.com/datasheets/WS2812.pdf
[12:28:13] <hypermagic> an "intelligent" rgb led
[12:28:30] <hypermagic> with unintelligent control protocol.
[12:28:39] <LeoNerd> Ignore that
[12:28:55] <LeoNerd> The problem is simply how to get internal-temporary registers in an asm() block
[12:33:24] <N1njaneer> LeoNerd: I've done extensive work with the WS28xx parts. Recently deployed a design that generates control for WS28xx and DMX out of an SDCard :)
[12:33:33] <hypermagic> i wrote this for pc but it might answer the q? http://pastebin.com/xy78F5jQ
[12:33:49] <hypermagic> hey N1njaneer
[12:34:01] <LeoNerd> N1njaneer: OK.. I'll show you my DMX+WS code when I have it working :)
[12:35:54] <N1njaneer> LeoNerd: We drive many sets of WS2811 with zero-jitter timing via FPGA, however if you want a good bit-band implementation for WS2811 on AVR, there's some good reference and working code example at http://bleaklow.com/2012/12/02/driving_the_ws2811_at_800khz_with_a_16mhz_avr.html
[12:37:42] <LeoNerd> N1njaneer: I can drive a WS2812 just fine
[12:37:45] <LeoNerd> 90 of them, even
[12:37:53] <LeoNerd> What I want to do is drive them /while/ reading DMX at the same time
[12:38:15] <LeoNerd> N1njaneer: please read => https://plus.google.com/114433557481806433076/posts/dgvWVsmNcZ7
[12:39:33] <hypermagic> LeoNerd, btw you can use macros with gcc
[12:39:38] <hypermagic> bb
[12:40:58] <LeoNerd> N1njaneer: My current plan is a new option c) Observe that at 16MHz, the exact handwritten loop to drive WS2812 contains lots of NOPs - sections of 4 then 8 then 5 NOPs for every bit output; making a total of 17 NOPs per bit, or just short of 130 for a full byte. That's /loooads/ of NOPs in which to insert some UART/DMX buffer management code, that polls the UART's recieve-ready bit once per loop
[12:59:01] <N1njaneer> LeoNerd: Ahh yes, this would be a bit challenging! Have you run the math at 24Mhz to see if that would help improve anything? Alternatively just go to using a SAMD20 at 48Mhz :)
[13:04:57] <LeoNerd> I have a 16MHz AVR chip :)
[13:05:15] <LeoNerd> Seriously though.. I have 130 NOPs spare... I can do this eeeeeeasy
[13:08:13] <N1njaneer> If you poll the UART and let it do the heavy lifting you should be able to squeeze everything in okay :)
[13:09:02] <LeoNerd> Yup
[13:09:19] <LeoNerd> The only thing I have to do while interrupts are disabled is poll the UART and move bytes into a buffer in RAM
[13:09:36] <LeoNerd> Once I've finished talking to the LEDs I can then go back and interpret the buffer
[16:21:20] * N1njaneer pokes the pick and place with a really long stick to arrive sooner.
[22:09:54] <ferdna> i bought a buffalo wireless modem but i cant enable mac enforcing because my phone wont connect
[22:11:14] <ferdna> and there is no firmware update for it..
[22:13:53] <ferdna> BUFFALO Air Station WZR-450HP2D N450
[22:13:56] <ferdna> thats the one...
[22:14:02] <ferdna> do you think guys this was a good buy?
[22:20:41] <nofxx> ferdna, mac filtering is really stupid anyway... if someone has the hw and time to crack wpa2, there's no problem spoofing and cloning a mac
[22:21:05] <ferdna> nofxx, i know... but it is a little bit harder to hack
[22:21:17] <nofxx> hm , it's not
[22:21:30] <nofxx> not to mention work for you, add everyone
[22:24:12] <Casper> mac filtering is totally useless
[22:24:22] <Casper> at best, it slow down the cracking by 20 seconds
[22:27:54] <ferdna> i read it somehwere
[22:28:03] <ferdna> let me see if ican find the link
[22:28:05] <ferdna> 1 sec please
[22:28:44] <ferdna> lol
[22:28:46] <ferdna> http://www.howtogeek.com/204458/why-you-shouldn%E2%80%99t-use-mac-address-filtering-on-your-wi-fi-router/
[22:28:48] <ferdna> hahaha
[22:32:56] <Casper> mac address filtering is only good on open AP that you want to block one particular idiot
[22:33:10] <Casper> then it may work...
[22:33:49] <ferdna> true
[22:33:51] <ferdna> hehehe
[22:33:59] <Casper> also
[22:34:02] <Casper> do disable WPS
[22:44:34] <ferdna> Casper, yes wps sucks...
[22:44:41] <ferdna> they have their own implementation of wps
[22:44:46] <ferdna> called aoss
[22:57:04] <ferdna> good night