#qi-hardware IRC log for Saturday, 2010-11-06

tux7new online community www.blitzpost.com (email, blog, chat, photos..)00:05
qi-bot[commit] Werner Almesberger: KiCad dislikes dots in file names: renamed u.fl-receptacle to u-fl-receptacle http://qi-hw.com/p/ben-wpan/7c2542e00:25
qi-bot[commit] Werner Almesberger: ants/: Passive board for antenna testing. http://qi-hw.com/p/ben-wpan/424ddce00:25
qi-bot[commit] Werner Almesberger: CAM process for the antenna test boards. http://qi-hw.com/p/ben-wpan/3f28b9200:25
qi-bot[commit] Werner Almesberger: ants/ants.brd: add exclusion zone around ground pad on top layer http://qi-hw.com/p/ben-wpan/e58985d00:25
qi-bot[commit] Werner Almesberger: modules/usb_a_plug_smt.fpd: enlarge signal pads by 0.2 mm http://qi-hw.com/p/ben-wpan/f8ff8bb02:02
qi-bot[commit] Werner Almesberger: cntr/: version 3 with simplified input circuit. http://qi-hw.com/p/ben-wpan/b7eb4b902:02
qi-bot[commit] Werner Almesberger: Updated cntr.sch for BOM processing. Fixed omission in atrf.sub http://qi-hw.com/p/ben-wpan/f2ab3cf02:13
qi-bot[commit] kyak: NAND DATA Partition offset and reflash_ben.sh fixed according to 512 http://qi-hw.com/p/openwrt-xburst/14ac57703:54
xiangfukyak: thanks for fixed "Partition offset"05:01
bartbesso did anybody have a working method of making a ben talk to an arduino without hardmodding either?07:01
wpwrakbartbes: does the arduino have usb ?07:47
bartbesusb client07:47
wpwrakbartbes: then you could use a pc as a relay. ben sends stuff to relay program on the pc, pc sends stuff to the arduino, and vice versa07:48
bartbesbut that's not what I want..07:49
bartbesI'm more interested in serial comms between the two07:49
bartbesiirc there's ttl on it07:49
wpwrakbartbes: alright, if this fits your definition of "not hardmodding", you could make a uSD-shaped pcb that plugs into the ben's uSD slot and that connects on the arduino on the other side. then define your own serial protocol over it.07:51
bartbesoh yes, because I have the tools to do that..07:51
bartbesanyway, there was some dude who was working with it07:51
bartbesbut who..07:51
wpwrakbartbes: if the arduino isn't 3.3 V compatible, you'd need some level adaptation. probably not more than some resistors.07:51
wpwrakbartbes: you mean Ornotermes ?07:52
wpwrakbartbes: (tools) tools to make a PCB in general or to cut one in that shape ?07:52
bartbesboth07:52
wpwrakhmm. your choices seem to be very limited :) does the arduino have wifi ?07:53
bartbesno07:53
bartbesI just remember some guy hooking it up to the serial outputs on the nn07:54
wpwrakbut isn't that "hardmodding" ?07:54
bartbesnot if those were the ones beneath the battery07:54
wpwraklike, opening it, soldering wires into it.07:54
wpwrakokay. then it should be quite feasible. you just have to determine if the arduino is 3.3 V-friendly.07:55
bartbesit's 5V, I guess07:55
wpwrakthe you'll need a voltage divider arduino->ben. add some 100 Ohm series resistor in the other direction too, as protection.07:56
kyakmirko: the problems you experience with gcc-mips appear when you build on 64bit host?09:08
mirkokyak: yep09:20
kyakhm, okay.. need to find 64bit to see what's going on09:21
mirkokyak: as our buildhosts are 64bit i had mark it as broken for now09:22
mirkodidn't have time to investigate - was sth. like sizeof failed or so09:22
kyakthe problem is known09:22
kyaki'll contact wolfspraul for an account on build host09:23
kyakthen i would be able to investigate09:23
mirkokyak: if wolfgang agrees but has no time to do so yet, i could create you one as well09:24
mirkojfi09:24
kyakok, thanks09:24
kristianpaulbartbes: beneath battery is not recommended09:37
kristianpaulbartbes: i think tuxbrain said is alaso 3v3 compatible...09:37
kristianpaulbut not sure09:37
kristianpauljust try feed it with 3v3 and see how it goes09:38
wpwrakkristianpaul: hmm, what's this burnt smell ? :)10:16
steve|mor how my grandfather used to say: "the smell of radio" :)10:18
kristianpaulwpwrak: :p10:21
kristianpaulok lests wai tusbrain and tell us his experiences10:22
kristianpaulor dig on the list i'm sure he said something about ti10:22
qi-bot[commit] bartbes: Updated nlove Makefile to point to newer revision http://qi-hw.com/p/openwrt-packages/7e2ca9712:53
bartbesoh heh, that explains the hilight :P12:53
rafais Ron in this channel?13:21
rafaI can not believe his questions.. and maybe he is just kidding13:22
rafano idea13:22
kristianpaulhow i can do a nanosecond delay...13:30
rafakristianpaul: man nanosleep?13:31
wpwrakkristianpaul: man nanosleep :)13:31
kristianpaulahh13:31
kristianpaulsoryy !13:31
rafahaha13:32
rafawerner is smart :D13:32
kristianpaulah as simple as islep13:32
kristianpauluslepp*13:32
kristianpaulusleep*13:32
wpwrakrafa: let's see how it takes him to find out what these functions really do :-)13:34
wpwrakrafa: (wiki) well, the front page could be a bit less yahoo and a bit more google :)13:35
kristianpaul". The suspension time may be longer than requested because the argument value is rounded up to an integer multiple of the sleep resolution or because of the scheduling of other activity by the system" Waht??13:36
kristianpauli may better follow  the RTC13:37
wpwrakrafa: he's quick :)13:37
wpwrakkristianpaul: inside the kernel, you have udelay and such, which don't sleep but busy-loop13:37
rafawpwrak: (wiki): yeah.. but it does not give him reasons to ask stupid questions :)13:37
kristianpaulyeah sorry i should g00gl3d before13:39
wpwrakrafa: i find his way of asking questions quite interesting. he asks as if he would ask on behalf of others, like a reporter.13:39
rafakristianpaul: are you replying about "stupid questions"?.. I was talking about that "Ron"13:40
kristianpaulrafa: ah yes about that :p13:41
kristianpauli just feel that  i shoudl supposed that if i  was using usleep there was a nanosleep as well13:41
kristianpaulok rafa13:42
kristianpaulwpwrak: Linux deprecates the usleep( ) function, replacing it with nanosleep( ), which pro-13:42
kristianpaulvides nanosecond resolution, and a smarter interface:13:43
kristianpaulaccording to Linux System programing book13:43
wpwrakkristianpaul: what are you trying to do ? send a pulse of a precise width ?13:43
kristianpaulwpwrak: yeap13:43
kristianpaulwell more o less precise13:44
wpwrakkristianpaul: how precise ? ;-)13:44
wpwraki.e., what are the upper and lower bounds ?13:44
kristianpaulmin 10ns13:47
kristianpaulmax...  well there is no max value in the datasheet...13:47
wpwrakperfect :)13:47
wpwrakthis is running on the ben ?13:47
kristianpaulXbusrt right13:47
wpwrakthen you probably don't need any delay. just set and immediately clear. you'll get something like a 200 ns pulse.13:49
wpwrak(if in doubt, check with a scope :)13:49
kristianpaularggg !13:49
kristianpauli DONT hace a scope fot measure that yet :(13:49
kristianpauli'm working on that too :-)13:49
wpwrakgood :) you need a decent scope for this sort of work. or a lot of patience and extreme luck ;-)13:50
kristianpauli realized that some weeks ago13:50
kristianpaul200ns pulse?? is linux soo slow???13:52
kristianpaulwpwrak: whats the min pulse you got and luckylly measured?13:52
kristianpaulha13:52
wpwraklinux has very little to do with this :) remember that i get ~2 Mbps when i do one-way "SPI".13:53
wpwrakah, let's see ...13:53
kristianpaulif iw was supposing to measure a max of 12ns clock delay is inposible using the Xburst IO then?13:53
kristianpaulyeah i saw the mail13:53
kristianpaulanf the graphs ..13:54
kristianpauland*13:54
kristianpaulwpwrak: you meant is hardware fault?13:55
wpwrakwhat exactly do you want to measure ? the duration of a pulse ? whether a pulse has happened ?13:55
wpwrakyup, hardware isn't so fast13:56
wpwrak190-200 ns per cycle. so the pulse is about 100 ns13:59
wpwrakgcc unrolls the loop a little (2x), but there's no difference in the signal. so the speed is determined by the bus, not the core. (as expected)14:03
kristianpaulmeasure <- the duration of a pulse14:04
wpwrakwill there be many pulses or just one ?14:04
kristianpaulmany14:05
kristianpaulis a clock14:05
kristianpauldata is synced with clock and SYNC sinal14:05
kristianpaulsignal14:05
wpwraknaw, i think there's no way to do this with just the cpu. it's too fast.14:14
wpwrak10 ns is actually even difficult for many scopes.14:14
kristianpaulwell my second option is just follwo the SYNC pulse14:15
kristianpaulan catch the 3 bits data14:15
kristianpauls/3/414:15
wpwrakkristianpaul: but what are you trying to do anyway ? it's not your GPS stuff. that one is much much slower.14:16
kristianpaulSYNC pulse is 2.048 M/s14:17
kristianpaulwpwrak: in part the question was related to GPS14:17
kristianpaulstuff14:17
wpwrakwhich chip is it again ? 4162 ?14:17
kristianpaulyup14:17
kristianpaulclock signal is 8.192 MHz btw14:18
kristianpaulwait a min14:18
kristianpaulyes i was reading the Logic Timing Characteristics14:18
kristianpauland units are ns14:19
kristianpaulwpwrak: in full datasheet is page 1614:19
wpwrakoh, but why do you care about this parameter ? just sample on the rising edge, not falling edge+tDEL14:21
kristianpaulhmm14:22
wpwrakof course, you're probably still too slow to catch data going at 8 MHz. let's see ....14:22
kristianpaulsure14:25
wpwrakyup. 10 Mreads in 2.75 s. that's about 3.6 Mreads/s. peak may be a bit higher. i didn't raise the priority or such. let's say, maybe 4 Mreads/s14:26
wpwrakbut that's what you have an FPGA for ;-)14:26
wpwrakor CPLD)14:26
kristianpaulyeah sure14:27
kristianpaulbut i'm trying to use what we already have and more coming14:28
kristianpaulthis little computer called nanonote :p14:28
kristianpaulthen if is really inposible move to FPGA stuff14:28
kristianpaulas you with wpan14:29
wpwrakdon't you have a SIE ?14:30
kristianpauli do14:30
kristianpaulis on righ now actually14:30
kristianpaulactually i'm trying to read ADC using C code not C++ wich i dont uderstand :-/14:31
kristianpaulon Jlime :D14:31
wpwrakso there's the solution :) the ben can't do this without extra hardware. so you can develop first with the SIE and then make some optimized hardware14:31
kristianpaulwell yes14:31
kristianpaulbut Wolfagang insist in look the single Ben first14:32
kristianpaulSIE was second14:32
kristianpauli dont want conclude tha the Ben is not capable of14:32
kristianpaulyet14:32
kristianpauli need do more test14:32
kristianpaulah sure i cant meaure clock14:32
kristianpauland by then data...14:32
kristianpauljust a SYNC pulse :-|14:33
kristianpauli just tought, okay, i can wait for SYNC then capture the data in the spected time14:33
kristianpauland verify timing later..14:34
virickristianpaul: what do you try to do btw?14:34
kristianpaulbut not make sense because i cant follow rise edge at 8Mhz..14:35
kristianpaulviric: hello14:35
virichello. Sorry for coming late :)14:35
viricI was just curious14:35
kristianpaulsure14:35
wpwrakkristianpaul: you could perhaps add a flip-flop to toggle on each SYNC. the use this as nSS for SPI.14:36
wpwrakthat way, we will receive at least some data14:37
wpwrakbut what a mess :) better to use a SIE. make things work at all first, then optimize the implementation14:37
kristianpaulviric: can you read this i'm not RTMF guy, just want see what people tought about reading it http://en.qi-hardware.com/wiki/GPS_Free_Stack14:37
kristianpaulwpwrak: mess <- indeed14:38
viricah gps14:38
wpwrak(SIE) that is, if you're comfortable with programming your FPGAs. you've done that before, haven't you ?14:39
kristianpaulwpwrak: and thats the aquistion step, i'm taling about do 20 FFT at the same time on Ben hardware ;-)14:39
kristianpaulor simulation on the go in order to do signal tracking14:39
wpwrak(fft) yes, yes, there are some very interesting problems in all this ;-)14:39
virickristianpaul: I think I understood what you deal with14:39
kristianpaulviric: :)14:39
viricfor the fft, I bet the simd instructions will help14:40
kristianpaulyeap !14:40
kristianpaulnot in toolchain yet btw..14:40
kristianpauljust soem asm examples at dingux wiki so far..14:40
wpwrakreal men program in assembler :)14:40
kristianpaulor mplayr code.14:40
kristianpaulwpwrak: yes !14:40
wpwrak(or hex code :)14:40
kristianpaulwell not14:40
kristianpaulbut asm is really usefull14:41
viricbut the problem is that the gnu assembler does not know those instrsuctions still14:41
viricso you will have to either go hex, or use the awk parser14:41
kristianpaulsimd is under NDA or soemthign for Ingenic doc i think14:41
kristianpaulor ir ead in the qi mail list, i wasnt suscribed in that time14:42
viricbut the dingo wiki has the instructions listed14:42
kristianpaulyep14:42
kristianpaulwell but talkign back about IO i'm about to tell Wolfgang, Ben is not capable of...14:43
wpwrakthe really tough guys write their code like this: ((void (*)()) "code")()14:43
kristianpaulha14:43
wpwrak(ben not capable) yup. needs at least a bit of a CPLD to help. you probably also want to rearrange the bits, for easier calculation.14:45
kristianpaulyes14:46
kristianpaulthats other part of the hisytory14:46
kristianpaulwell for now no CPLD but i can model the hardware on SIE14:48
wpwrakperfect. you can then generate test patterns with the cpu and verify that your fpga does what it's supposed to do.14:50
kristianpaulyp14:51
kristianpaulyup*14:51
kristianpaulviric: i'm not aware of use or utility of this awk parser?14:52
kristianpaulwell i know a bit of awk14:52
kristianpaulbut what you inted with it?14:53
kristianpaulintend*14:53
viricI think the toolchain from ingenic provides an awk script that catches the simd instructions, and codes them to hex14:53
kristianpauloh14:53
viricI have not used it... but I heard about it here.14:53
viricSo they did not modify gas to accept their simd instructions, but made this awk script instead14:53
kristianpauli would like to see an example14:53
viricIsn't their mplayer written this way?14:54
kristianpaulhmm rafa  know more about it14:54
kristianpauli jusre remenvber i found once a public pdf about simd and they said, ok this is C next we will use asm}14:54
kristianpaulfor simd14:55
viricAnd you will also need floating point calculations for the gps14:55
viricI imagine14:55
kristianpaulyeap14:56
viricfloating point fft may be overkill14:56
kristianpaulindeed14:56
kristianpaulthis is hardware jobs14:56
viricWhat fpga has the SIE?14:56
kristianpauleven my 1Ghz got slow soing some gps fftp tasks14:56
kristianpaulviric: xilixn 500K14:56
viricspartan3e?14:57
kristianpauli think14:57
kristianpaullet me check14:57
viricThose have quite enough multipliers, but not floating point multipliers I think14:57
viricyes, spartan3e14:58
viricbtw14:59
viricwhat determined the dimensions of the nanonote?14:59
viricDesign related to the keyboard/screen?14:59
viricor more about how to fit all what is inside14:59
viric?14:59
kristianpaulmechincal design well14:59
kristianpauli think this nanonote was an already made device in china market15:00
viricAhh15:00
kristianpauli think15:00
kristianpaulbut i'm not Wolfgang :p15:00
viricok :)15:00
kristianpauland then qi start doing reverse eng to it15:00
viricI'll go eat something. Thank you and good luck for this gps job15:00
kristianpauland get allowed to15:00
rafaviric: it was a dictionary before qi15:00
kristianpauli saw a doc about it15:00
viricahh ok15:00
kristianpaulyup15:00
kristianpauldigital dictionary15:01
kristianpaul:p15:01
kristianpaulin color !15:01
rafahaha :)15:01
viricwell, open software also started copying. :)15:01
viricwhy not open hardware.15:01
kristianpaulyes15:01
kristianpaulbut the mechanical part is not well open, besides the scans from wpwrak15:01
rafakristianpaul: (dictionary in color) and now we are trying to play PSx games there :D15:01
kristianpaulrafa: :D15:02
kristianpaulbut gps will break it or burn it  :p15:02
kristianpaulrafa: you know how simd code is included in mplayer?15:02
kristianpaulbut latelly you still using mplayer from ingenic?15:03
rafakristianpaul: I have not idea15:03
kristianpaullol15:03
kristianpaulok15:03
kristianpauli hope you have some..15:03
rafakristianpaul: I have a theora player ready for resellers/qi ;)15:03
kristianpaulohh15:03
rafakristianpaul: well, almost ready15:03
kristianpaulit uses simd?15:03
kristianpaulcause theoura is high cpu demanding?15:04
kristianpaulahh i remenber you find out how really compress at the limit15:04
rafakristianpaul: the libtheora player example on sdl using fb is okey so far.15:09
kristianpaul:D15:10
rafakristianpaul: my previous problems on tests were the libtheora player example with sdl using x11, no fb15:10
rafathen I realized that we can tell sdl to use fb directly15:10
kristianpaulrafa: talking about fb i remenber now you said Xfbdev is part of X11 right15:11
kristianpaulbut X11 are are a bunch of sofware not just the xserver, right?15:11
kristianpaulubt sdl using fb directly is like ignore Xfbdev?15:12
kristianpaulor it can ben on top of it?15:12
rafakristianpaul: you can run x11.. but before to run a sdl application you can set "export SDL_VIDEODRIVER=fbcon"15:13
rafaso the sdl app will use fb15:13
rafano x11.15:13
rafaand you would be still running x1115:13
kristianpauland no conflict?15:14
rafawell, maybe you can not get x11 desktop easily until sdl app exists15:15
rafabut for a player that is okey15:15
kristianpaulof course15:16
kristianpaulahh that the lovely part of this "just one thing at the time" devices15:16
kristianpaulignoting multitasking for not multimedia apps15:17
kristianpaulignoring*15:17
kristianpaulOT but i could resist sahre this link http://topex.ucsd.edu/gmtsar/15:31
kristianpaulnow we can sleep in calm in case we needed a radar at home , jsut in case ;-)15:32
qi-bot[commit] Werner Almesberger: ants.brd: add guide lines for placement of bottom adhesive http://qi-hw.com/p/ben-wpan/53f2fc716:15
qi-bot[commit] Werner Almesberger: ants.brd: added ground fill exclusion zone under connector (again ?) http://qi-hw.com/p/ben-wpan/10b4b5116:15
qi-bot[commit] Werner Almesberger: Firmware support for CNTR version 3. http://qi-hw.com/p/ben-wpan/190e8f016:15
qi-bot[commit] Werner Almesberger: Minor CNTR layout cleanup. http://qi-hw.com/p/ben-wpan/4c9053016:15
kristianpaulwpwrak: ok this timing you said thta max recomended i/o rate of 2.4Mpbs is valid for SPI, but what about GPIO16:26
kristianpaul?16:26
kristianpaulor SPI is uspposed to faster than gpio?16:26
kristianpaulahh you are working SPI port as gpio !!16:26
kristianpaulgot my answer :)16:26
wpwrakyup16:27
kristianpauland SPI as SPI it self?16:27
wpwrakoh wait. no ,the other way around. i was doing an SPI imitation doing bit-banging.16:30
kristianpauli noticed that in Jz4720_ds 3.9.2 SPI Module Timing is empty...16:32
wpwrakyeah, the documentation isn't particularly satisfying. you can find some hints - such as max speeds - in the features overview, though.16:36
daren226hi goodnight18:29
daren226can anyone help me with my pc18:29
daren226i need help plz.18:30
Action: kristianpaul finally good a good decent LTP DB25 cable19:13
kristianpauls/good/got19:13
kristianpaulnah my desk is a mess icant find the cpld :/19:22
kristianpaulwee19:39
kristianpaul'1': Programming completed successfully.19:40
kristianpaul:D19:40
kristianpaulnow, what can i do with  a 64 Macrocell CPLD..19:45
kristianpaulbesides a tris stae buffer implementation..19:45
kristianpaula flip flop ;-D19:48
aisaIs anyone here that is familiar with our mediawiki installation?21:34
kristianpaulwhy?21:34
aisaSorry, dur.21:34
kristianpaulaisa: wiki it self now http://en.qi-hardware.com/wiki/Server_Setup#MediaWiki21:34
kristianpauls/now/know21:34
aisaOn the recent changes page, we have an atom feed.21:34
aisathat includes full diff history.21:34
aisaI don't know if this is provided by a plugin or whether it is because we're running mediawiki 1.17.21:34
aisaI was reviewing the Server_Setup page,21:35
aisabut I'm guessing fidelio doesn't host our mediawiki,21:35
aisaas the document is not matching the filesystem on fidelio.21:35
kristianpaulno fidelio dont21:35
kristianpaulis other srver i forgot name now21:35
kristianpaulturandot.qi-hardware.com21:36
kristianpauli think...21:36
aisakristianpaul: thank you, I wrote to the mailing list.21:42
wpwrakoh, brilliant. silabs have chips with 32 kB and 64 kB of flash, and they both return the same ID. very convenient for flash programmers :-(23:40
kristianpauljuan64bits: oyu  here !!23:48
kristianpaulI have tons of question23:48
kristianpaulin spanish :)23:49
juan64bitstell me23:49
juan64bitslisto23:49
kristianpaulok estoy haciendo en C los que tenias en C++ para hablarle al ADC23:49
kristianpaulentonces23:49
kristianpaulpasos a seguir.23:49
kristianpaulprimero poner 0x08 en el CLKDIV?23:49
kristianpaulmejor dicho23:50
kristianpaulantes de eso23:50
kristianpaulmirando ADCw.cpp23:50
kristianpaulno entiendo ADCw::adcConfig23:50
kristianpaulmenos ADCw::adcCheckBufferFull23:50
kristianpaulyo entiendo o creoo enteneder23:50
kristianpaulque la deia es verificar si el comando de escritura fue exitoso leyendo el CMD_start23:51
kristianpauldeberia ser 0 luego de dejarlo en uno??23:51
kristianpaulo...23:51
juan64bitsexacto... y el adcConfig lo que hace es escribir los 4 bytes de configuración23:51
kristianpaulpero que order23:51
kristianpaul?23:51
juan64bitsoerder?23:52
kristianpaulreloj va primero en 00??23:52
kristianpaulorden***23:52
juan64bitssi.... clkdiv, size_l, size_h y cmd23:52
kristianpauly al final es que miro entonces el CMD-Start a ver si ya cambio de 1 a 0??23:53
kristianpauly estos pasos tengo que hacerlos siempre para cualquir cosita?23:53
kristianpauldigamos cuando quiera leer el ADC, no podria no mas cambiar cmd y ya?23:54
kristianpaulo..23:54
juan64bitsno, pues sólo para la lectura23:54
kristianpaulquien es solo lectura?23:54
juan64bitsbitssi, pero la configuración que escogí inicialmente fue de23:54
juan64bits8 bits23:54
kristianpaulah??23:54
juan64bitsy como escribo y leo enteros entonces el procesador siempre me lee paquetes de a 4 bytes23:55
kristianpaula ver23:55
kristianpaulahhh23:55
kristianpaultoca mandar el "paqueton" junto ??23:55
juan64bitssi sólo escribo CMD entonces los otros lo escribe con ceros jejeje23:55
kristianpaulhmm por eso los + en el config23:55
kristianpaulclaor ""23:55
juan64bitsaja23:55
kristianpaulpero..23:55
kristianpaulconr razon..23:55
juan64bitseso se puede mejorar usando sólo chars23:56
kristianpaulorque no uso enteros sin signo?23:57
kristianpaulah bueno char pues es 8 bits23:57
juan64bitsaja, en los ejemplos básico de acceso usamos el unsigned char23:58
juan64bitspero esto nos servia para mostrar que se podía hacer cosas como lo de la lectura de 4 bytes23:58
kristianpaulahh claro entonces ya se por que usas el  &0x20000000 en cechkbuffer pues lees los 4 bytes d euna23:58
kristianpaulcheckbuffer es para esperar el cmd_start cierto?23:59
juan64bitssi23:59
kristianpaulestaba voletando y volteando y se me paso el tipo de dato...23:59
kristianpauljeje23:59
--- Sun Nov 7 201000:00

Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!