Author Archive

Gnuradio GRC basic receiver for LimeSDR

April 6th, 2017 admin No comments

Here you are a basic LimeSDR GRC demo file for LimeSDR.
Usage: Select the input, ernter the center frequency in MHz in freq, adjust the three gain pots and then tune the IF to the desired signal.
Right windows are sampled spectrum, right window is IF for demodulation. You can adjust BW.

Download HERE: GRC gnuradio LimeSDR basic receiver

Gnuradio GRC LimeSDR basic receiver diagram
Gnuradio GRC LimeSDR basic receiver diagram

FUNCube Pro Plus (and others) Multiple Analog Receiver EDIT: 1/27/2013 Version 0.3

December 29th, 2012 admin No comments

It seems that every SDR HAM enthusiast is forced to produce an excedingly overbloated, confused and unreadable GNURadio companion sketch to prove his habilities. Well, this is mine.

My intention is to build an every day usable SDR software that contains the most possibilities a synthetic transceptor could provide. By now, every SDR console software is aimed to simulate a hardware radio with spectacular spectrum displays but  leaving out much of basic functionality (heck, have you ever seen an SDR scan function?) and absolutely forgetting all the computer can make for the radio ( scan with ever-imagined options? scan with automatic freq storage? point-and-click memory? ocuppation reports? automatic demodulation detection? automatic bandwidth? automatic squelch? any automatic anything? magic noise reductions and low signal recovery? any form of digitally enhanced TX? cognitive radio, anyone?)

So I’ve just build My First General Analog Receptor ™ for GNURadio using Companion to get in touch with the matter. It’s quite limited as gnuradio-companion is more of an mathematical design tool than programming scheme. The receptor is intended to have the best reception quality, and usability (Disclaimer: I’m not an communications engineer). Of course it’s totally open and free software. Feel free to tinker and modifiy, then inform me, if you like.

It’s aimed to Funcube Pro Plus as it’s my latest toy, but can be used with any soundcard based zero-IF receptor. Simply change the samp_rate frequency (please note quirks) and hardware device (currently alsa HW:1) due of it hasn’t any frequency selection, do it externally.

Features (Version 0.3):

  • Many general impovements and fixes. Please check it.
    • Sensibly improved demodulator levels. Now clipping noise is greatly reduced.
    • USB / LSB bandwith filter corrected.
    • NFM bandwith now adjustable over  3KHZ.
    • Some optimizations on demodulators’  path. Less CPU occupation.
    • IF tuner position now accurate whatever the sampling rate selected.
    • Constant aufio level on amplitude modulation modes due to new AGC.
  • Slightly more compact window.

Features (Version 0.2):

  • Real USB & LSB demodulators
  • New visual tab for Signal meter
  • Now sample rate, hardware and decimation are command-line parameters
  • State line at bottom showing these parameters
  • Simple RF attenuator.
  • General improvements on decoders.

Features (version 0.1):

  • Three independent and simultaneous NFM, AM & SSB demodulators
  • FM STEREO decoder with separation control
  • Continuos sintonization (into sampled spectrum) and bandwidth selection for each demodulator
  • Easy visual sintonization with fine adjust for SSB
  • Volume and Squelch for each demodulator
  • Continuous selectable bandwidth from 0.5Khz to Nyquist for each decoder.
  • Ring-modulator audio descrambler for each demodulator. Can also be useful with SSB.
  • Squelch-controlled WAV file recorder for each demodulator
  • I/Q file recoder for full spectrum and each demodulator
  • Big visual FFT for whole spectrum and IF of each demodulator
  • Big visual waterfall for whole spectrum and IF of each demodulator
  • FFT spectrum of demodulated audios. Also big.



  • A zero-if soundcard-based HW SDR receptor (FUNCube dongle & Plus, SDR IQ, Perseus, etc. etc.)
  • GNURadio version 3.6.2
  • Better than 1′5 Ghz CPU (for visuals mainly)


Fire the python application. Upper tabs selects visualization. Lower tabs selects demodulator. Lower selector changes visualization between full spectrum and any of the demodulators IF for any of the visuals (FFT, waterfall and audio). No audio spectrum for full spcetrum.

On each demodulator, select the frequency by moving the IF slider just under the desired spike. Slider size and position is carefully adjusted to match that on visualization (only for 192Ksamples rigs, I guess). Then switch to IF visualization for further adjust. Please note that IF visualization and demodulator tabs are independent, you can be moving parameters on other demodulator than you are seeing.

No sound at all? Try enabling decoders (first is enabled by default) and lowering Squelch!

Enabling FM Stereo disables the rest of decoders. It makes sense as FM Stereo consumes all the bandwidth.


  • Starting the program creates all the I/Q and WAV files with 0 size. See no way to avoid it.
  • No I/Q playing option.
  • On v0.2, if BW if set too wide in USB/LSB, spectrum can “overflow” into audio range due to decimation. Removing decimation is too costly.
  • Application fails when sampling rate less than 192.00 due to FM Stereo filters width. Please unplug all FM Stereo modules on that case.
  • In some computers audio gets corrupted. Try modifying application priority.
  • You tell me. Or better correct, then tell me.

In the works:

  • USB/LSB distinct demodulator (quite there already)
  • TX
  • RDS?
  • Some form of frequency selection for FCD, FCDPP, or SI570 tuners.
  • Some form of I/Q file playing
  • Digital modes receiver
  • A whole independent application to provide all I’ve noted before and much more

Now with video. Demonstrating FM and triple demodulator (v0.1). Proper screencast soon.

Configurar router ADSL Huawei HG532c averiado/deshabilitado

January 22nd, 2011 admin No comments

Este es un procedimiento para modificar la configuración de un router Huawei HG532c (y posiblemente otros de la misma familia) cuando el interfaz web ha sido averiado/deshabilitado por el proveedor. Este router lo proporciona en España, por ejemplo,  Jazztel.

El caso es que en diversas circunstancias (que quizá detalle en otro post pero os adelanto y juro que soy inocente) el ISP deshabilita el interfaz web del router remotamente para que el propietario no pueda utilizarlo con otro proveedor.  Lo que hacen es borrar o modificar ficheros de javascript del interfaz para que el navegador señale un error y no pueda hacer submit de nuevos parámetros.  El router dispone de otro interfaz via CLI por telnet, pero las opciones son prácticamente nulas. Así que te quedas básicamente con un punto de acceso Wifi limitado. Sucio, ¿Eh?

Sin embargo, la página para salvar y cargar la configuración de fichero funciona. Así que vas a Maintenance > Device > Configuration file > Download y te bajas la configuración del router para modificarla offline.

Por desgracia el fichero descargado no está en claro. Contiene un chorro de caracteres sin retorno de carro

root@galerna:/home/mimismo/down# cat router_config
ISIgRnRwUG9ydD0iMjEiIEZ0cFBhdGg9Ii9tbnQiIFRlbG5ldEVuYWJsZT0iMSIgVGVsbmV0UG9y [...]

Enseguida saltan a la vista unas características peculiares del chorro:  No tiene retornos de carro, son todos caracteres ASCII y hay grandes trozos que se repiten. Si hacemos la prueba de cambiar un parámetro en el router, volver a salvar la configuración y comparar los ficheros, vemos que sólo cambian uno o dos caracteres. Así que de “cifrado” nada. ¿No será un simple y viejo Base64?

root@galerna:/home/mimismo/down# base64 -d router_config
<?xml version="1.0" ?>
<DeviceInfo ProvisioningCode="JAZZ">
<X_PortalManagement Enable="0" PortalUrl-Computer="" PortalUrl-STB="" PortalUrl-Phone=""/>
<X_ServiceManage FtpEnable="1" FtpUserName="XXX" FtpPassword="XXX" FtpPort="21" FtpPath="/mnt" TelnetEnable="1" TelnetPort="23" SambaEnable="1"/>
<ManagementServer URL="" Username="" Password="" PeriodicInformEnable="1" PeriodicInformInterval="3600" ConnectionRequestUsername="None" ConnectionRequestPassword="None" X_SSLCertEnable="0" X_ConnReqPort="8081

Caramba, un fichero en XML perfectamente human-readable para gozo del personal y bochorno del proveedor.  Este es uno de los muchos motivos por los que el XML es generalmente una mala idea.

Pues nada,  rediriges el resultado a fichero, cambias lo que necesites, lo vuelves a codificar en Base64 (sin retornos de carro)  y lo cargas en el router. Lo aceptará sin problemas y se reiniciará. No te olvides de deshabilitar a conciencia los parámetros de administración remota, por si las moscas.

root@galerna:/home/mimismo/down# base64 -d router_config >router_config_claro
root@galerna:/home/mimismo/down# emacs router_config_claro # U otro editor de inferiores características
root@galerna:/home/mimismo/down# base64 -w 0 router_config_claro >router_config_oscuro

En caso de que desconozcas el valor de algún campo, vete al interfaz web del router y míralo en el código fuente o con un inspector DOM, porque el interfaz sigue estando, lo que no funcionan son las validaciones.

Y esto va por los veintitantos euros que me habeis soplado en el 902, amiguetes.

Actualizar Wii pirateada a 3.4 conservando la carga de copias

October 9th, 2010 admin No comments

Esto es un tutorial para actualizar una Wii previamente pirateada (con el Homeberew Channel y algún cargador USB) a la versión actual del firmware de Nintendo, 3.4E conservando la posibilidad de ejecutar homebrews y backups desde DVD o USB.

No voy a poner ningún enlace directo. Confío en tu capacidad de usar un navegador y Google.

Leetelo todo antes de empezar.

Recuerda que aunque el procedimiento está probado existe una pequeña posibilidad de que te cargues la Wii más allá de la garantía. Luego no me vengas con tonterías. La garantía es “a mi me rula. Búscate la vida.”

El tiempo total será de una o dos horas.

edit: Aclarados un par de párrafos en la explicación.

Método para listos

  1. Instala el Homebrew Channel v0.8
  2. Instala el SciiFii v4 en la SD.
  3. Instala el cIOS Installer v5.1 en la SD.
  4. Actualiza el firmware a 3.4
  5. Con el SciiFii instala el cIOS 249
  6. Con el cIOS Installer instala el cIOS 202, 222, 223 y 224 usando como base el 38,37,37 y 37.
  7. Enjoy.

Método para gente normal

  1. Suponemos que ya tienes instalado el Homebrew Channel y acceso a internet desde la Wii. Si no es así, vete a para descargar te el HackMii v0.8 o superior, y  luego a para seguir las instrucciones.
  2. Asegúrate de que tienes el Homebrew Channel a la versión v1.0.8. Se vé en la esquina superior derecha pulsando el “home” .Se actualizará solo si abres el canal y lo dejas un momento. Sinó utiliza el HackMii v0.8 para instalarlo.
  3. Hazte una cuenta en Ahí están todas las versiones de todos los paquetes necesarios.
  4. Bájate de Scenebeta los siguientes programas, instálatelos en la tarjeta SD y comprueba que arrancan correctamente desde el Homebrew Channel, pero sin instalar nada :
    1. SciiFii v4 o superior
    2. cIOS Installer v5.1 o superior
  5. Ya puedes actualizar. Vete a la configuración de la Wii y acepta la actualización. Ésta puede tardar entre 10 y 30 minutos.
  6. Una vez actualizada el Homebrew Channel debe seguir ahí. Si no está la has cagado, muchacho, no era la v1.0.8. Busca tutoriales para juankear Wiis vírgenes con v3.4.
  7. Con el Homebrew Channel abre el SciiFii. Selecciona la segunda opción “Hack your wii ! (Full Mode with LoaderGX)“. La instalacion durará entre 10 y 20 minutos.
  8. Abre ahora el cIOS Installer
    1. Selecciona la IOS 249 en la primera linea
    2. Instala todas las cIOS que aparecen, cada uno con este IOS de base. Tardará unos 5 minutos cada uno:
      1. cIOS 202, con IOS 38
      2. cIOS 222, con IOS 37
      3. cIOS 223, con IOS 37
      4. cIOS 224, con IOS 37
  9. Voila. Usa tu nuevo canal USB Loader GX del menú de la Wii para cargar copias y backups.

Nota: En caso de que el SciiFii se queje o el cIOS 222 Installer no te deje instalar la 222 puede ser porque exista un “stub” impidiendo la instalación de esas cIOS. En ese caso utiliza el DOP-Mii v14.2 (se descarga de la página del homebrew) para borrar los “stubs” en la posición cIOS 249 y 222 y vuelve a intentarlo desde el punto 7.


IOS son los distintos firmwares de Nintendo. Su versión es incremental. La actual es la 80. Las actualizaciones se realizan por wifi. Las actualizaciones no “machacan”  los IOS más antiguos, sino que todos se almacenan en la flash de la Wii y cada aplicación elije la versión de IOS que quiere utilizar. Los primeros contenían un bug que permitía juankear la Wii, pero posteriormente Nintendo los ha parcheado.

cIOS son “Custom IOS”, IOS piratas que se hace la gente para ejecutar software pirata. Consisten en IOS originales modificados para meter código adicional o deshacer los parches. Se instalan como IOS normales en la Wii pero con números de versión alto: 222, 249, etc.

En resumen, las IOS son de Nintendo, las cIOS son piratas.

El “Homebrew Channel” es un programa que permite ejecutar programas que no estén firmados por Nintendo. Es el producto de una iniciativa por la “liberación” de la consola denominada “Wiibrew”. Los promotores se mantienen limpiamente alejados de la piratería y reniegan de ella, pero el Homebrew Channel es imprescindible para poder instalar todas las demás aplicaciones, sean para ejecutar copias piratas o no. El “Homebrew Channel” se instala usando bugs en juegos originales que provocan un desbordamiento de buffer y ejecutar un instalador que instala el “Homebrew Channel” en la consola. Una vez instalado ya no hace falta el juego original y se puede ejecutar como otro canal más.

Un “stub” es una versión falsa de una IOS o cIOS que ocupa el sitio de la auténtica pero que no hace nada, impidiendo que la auténtica pueda ser instalada.

La actualización de Nintendo 3.4 de julio de 2010 es la primera que hace algo “serio” para eliminar la piratería. Principalmente parchea los bugs del menú, elimina el “bug trucha” que permite ejecutar código sin firmar de TODAS las IOS que tenga la consola, elimina todas las custom IOS, pone “stubs”  en su lugar y borra el canal Homebrew. Actualizando al Homebrew v0.8 se cambia el nombre del canal instalado, la actualización a 3.4 no lo encuentra y no lo borra. En principio esto es suficiente para conservar el canal y seguir ejecutando código no oficial tras actualizar a 3.4, pero al haber borrado todas las cIOS no puedes ejecutar nada pirata.

El SciiFii instala por wifi el cIOS 249, que podemos considerarlo (junto al 250) como el “padre” de todos los cIOS. También instala el USB Loader GX en un canal, lo que nunca viene mal. Con el cIOS 249 ya podemos ejecutar el USB Loader GX, pero no sirve de mucho, porque la mayoría de los juegos necesitan otros cIOS.

Usando el cIOS 249 podemos ejecutar el cIOS 222 Installer e instalar todos los cIOS.Para ello se descarga de Nintendo IOS oficiales antiguas, las reparchea y las instala con los números áltos. No podemos hacerlo usando aplicaciones “oficiales” del movimiento “wiibrew” como el DOP-Mii porque sólo te instalan las IOS de Nintendo, y en el caso del 202 y ss. son “stubs”.

Para componer las cIOS 222, 223 y 224 conviene usar de base la IOS 37 porque las demás tienen problemas para activar algunos instrumentos USB del Rock Band. Eso es todo. Para otros juegos se tendrán que parchear con otras bases.

En realidad jugar no me pone mucho. Me compré la Wii para meterme en estos berenjenales. Luego apareció el Beatles Rock Band, pero esa es otra historia.

Manifiesto contra la perfeción

July 7th, 2010 admin No comments

(Del excelente blog de Estratega)

Manifiesto contra la perfección

“Fallor ergo sum”(“Me equivoco, luego existo”) San Agustín

Reconocemos en la cultura de la perfección abundantes peligros, y aquí virtualmente reunidos refrendamos este manifiesto de 10 puntos.

1. Advertimos que el escalón entre “suficientemente bueno” y “perfecto” requiere de esfuerzos no proporcionales a la recompensa, causa retrasos o incluso impide los resultados. “Lo mejor es enemigo de lo bueno”, “la parálisis por el análisis” decimos. La búsqueda de la perfección puede ser una forma ineficiente de abordar las tareas o una forma cobarde de abordar las responsabilidades. Pocos lo ven en sí mismos, porque la frontera con los conceptos de excelencia, constancia, precaución o afán de superación son difusos… Ahora bien, no es precisamente ese “perfeccionismo” el que denunciamos aquí, por otro lado bien conocido, sino otros que pueden ser peores que ese, y que pasan inadvertidos. Por otro lado, reconocemos que a veces es “lo bueno” lo que es enemigo de “lo mejor”. No estamos en contra de la búsqueda de la perfección cuando es creativa.

2. Manifestamos que la obsesión con la perfección puede causar infelicidad y hasta matar. La búsqueda de la perfección puede ser obsesiva. La dieta, la cirugía, la industria de la autoayuda pueden ser caminos a la ansiedad, la insatisfacción continua y la enfermedad. El miedo al error mortifica y mata: el samurai se hará el seppuku. La decepción puede iniciar un ciclo vicioso autodestructivo. A nivel colectivo, la búsqueda de la perfección social puede llevar al campo de exterminio y el gulag.

3. Declaramos que la búsqueda de la perfección puede arruinar cualquier plan. La rozadura del coche, la mancha en la corbata, la carrera en la media, la mosca que hunde la habitación del mejor hotel, el malentendido, las cuatro gotas… Por el contrario, reparamos en que a imperfección es divertida si se sabe convivir con ella. Hay que saber tratar a nuestros errores e imperfecciones como hijos nuestros que son, con cariño, pero con disciplina. Saber reírse de sí mismo es fundamental y la base del buen humor. Decía Tolstoi que “todas las familias felices se parecen entre sí; las infelices son desgraciadas en su propia manera”. Lo mismo podríamos decir de las situaciones perfectas e imperfectas, y de las personas perfectas e imperfectas. Las segundas son más interesantes. Tonto es el que nunca hace tonterías.

4. Denunciamos que la cultura de la perfección genera excelentes hipócritas, porque la perfección es imposible lograrla pero sí fingirla. La taxonomía de los errores es infinita. La ingeniería siempre lo ha sabido, aunque con el tiempo, se relaja. Hoy lo vemos en áreas como las finanzas, la seguridad de los vehículos o la extracción del crudo. Cuando algunos de nuestros mandatarios parecen sinceros en negar lo evidente, sea crisis o chapapote, quizá la información no fluye ascentemente sin edulcorar. Está siendo frecuente despedir al que es políticamente incorrecto a micrófono abierto (un ejemplo reciente, el general Stanley McChrystal), pero no al incompetente.

5. Revelamos que la creencia en la autoperfección es patología bien conocida en lo individual pero no en lo colectivo. También las comunidades o empresas piensan han alcanzado la perfección. O peor: se olvidan de que creen que han alcanzado la perfección. Por ejemplo, en ciertos supuestos sobre cómo funciona el mundo. Nuestra supervivencia depende de alcanzar conclusiones válidas sobre el entorno. Nunca lo serán si se descarta la información que no encaja en nuestros modelos, si los creemos perfectos.  El problema es que las sensaciones cuando se tiene razón y cuando se está equivocado son idénticas. Cuando se descubre lo segundo siguen siéndolo, ya que se pasa a tener razón, pero por algo distinto. En primera persona, “estar equivocado” sólo puede conjugarse en pasado. También en primera persona del plural. Recordamos aquí dos frases de Alan Greenspan sobre la crisis que se fraguó ante sus ojos miopes: “it left me in a state of shocked disbelief” y “the whole intellectual edifice collapsed”. Ese es el impacto de la realidad cuando golpea súbita nuestros modelos presuntamente perfectos.

6. Creemos que la perfección puede ser repelente. Los genios lo saben y no olvidan nunca permitirse algún error. Los aficionados disfrutan encontrando los errores en sus obras de culto y eso contribuye a quererlas y disfrutarlas más. Pero cuando los críticos analizan las obras, tratan sus imperfecciones con superioridad. Los descuidos de Homero eran para Horacio siestas del genio. En otros críticos, incluso manchas que cuestionan su belleza o su veracidad. La mujer de Sancho recibe varios nombres en el Quijote. Herodoto es criticado porque ofrece cuatro explicaciones de la ruina de Creso. Pero, ¿no tenemos más de cuatro explicaciones a la crisis actual y nadie se escandaliza? Las figuras excesivamente perfectas, como en Second Life, causan rechazo. Los japoneses tienen un nombre para la belleza en lo imperfecto, humilde o incompleto: Wabi-Sabi. Nosotros tenemos a Belén Esteban.

7. Avisamos además de que la perfección es poco resistente. Las mascotas de pedigree perfecto suelen tener salud frágil. El pan duro dura más. Lo mismo ocurre a nivel social: en la Guía del Autoestopista Galáctico se relata la historia de Golgafrincham. Este pueblo perfeccionista decidió engañar y enviar a todos los ciudadanos de puestos mediocres como limpiadores de teléfonos y estilistas rumbo a un planeta desconocido (que resultó ser la Tierra). Posteriormente, todos los habitantes de Golgafrincham murieron por una infección de oído que se propagaba por los auriculares de los teléfonos. La perfección no es sostenible.

8. Reparamos en que la imperfección puede ser creativa y disruptiva. Los errores unidos a la atención nos han llevado del acero a América o el Post it, pasando por la penicilina. Los artistas se han clasificado en conceptuales y experimentales. Los primeros planifican y construyen ajustándose perfectamente a lo deseado. Los segundos se dejan sorprender, para Cezanne cada pincelada cambiaba el cuadro. Curiosamente, los experimentales suelen florecer a edades maduras. La evolución, el mejor sistema de adaptación que existe, funciona gracias a los errores en la transmisión genética. La imperfección y el error nos ayudan a conocer y a crear. Las teorías científicas suelen creerse perfectas hasta que surge otra teoría explique las anomalías que hasta entonces se escondían debajo de la alfombra. Algo hay que creer, aunque sea erróneo, porque si no, no podemos empezar ni a hacer preguntas. El problema es creer que ese algo es “perfecto”.

9. Evidenciamos que las oportunidades están en las imperfecciones. De los errores se benefician pocos hoy por hoy: los estadísticos, que los cuantifican, los cirujanos plásticos, los fabricantes de gomas de borrar, los abogados… Pero las imperfecciones que no se ven o a las que nos resignamos son fuente de oportunidades empresariales: las necesidades no cubiertas y las oportunidades de mejora o arbitraje… También son el camino: una cultura tolerante con el error y el fracaso es uno de los secretos del dinamismo empresarial de sitios como Silicon Valley, el “valle del silicio” en California. Aquí tenemos, en cambio, dada nuestra cultura estricta con el error, el “valle del cilicio”.

11. Negamos que la imperfección sea maldad. La cultura tiende a relacionar mal y fallo, tacha y pecado. En muchas épocas se ha tildado a los deformes o lisiados de malditos, y por tanto sin derechos. Los indios los explotaban (lo que ocurre incluso hoy en día) o los arrojaban al Ganges. Los romanos los eliminaban, si cinco vecinos los avalaban. Con el tiempo, hasta se aliviaron de ese trámite. Declaramos que la intolerancia con la imperfección es una imperfección. Y que el error no es el mal, por más que en ambos “se caiga”. El mundo asocia la imperfección y el error a la maldición, la estupidez, la ignorancia o la pereza. Sin embargo, nosotros pensamos que también provienen de la diversidad, la curiosidad, la valentía y la eficiencia.

Declarando nuestra adhesión a los once puntos expuestos, suscribimos este Manifiesto en su totalidaz.

URL corta:

Linux llega a la mayoría de edad

August 25th, 2009 admin No comments

Un zillón de sitios van a celebrar tan magno eveno y se van a regodear en el mensaje original de Linus (Benedict) Torvalds. Yo aporto el granito de arena incluyendo algunas fotos de la época, así como el mensaje de recapitulación del primer aniversario (un poco tocho, pero seguro que alguno lo encuentra interesante).
Todo ello venía escondido dentro de un set de 6 CDs llamado “LINUX Developer’s Resource” de abril de 1996 que obra en mi poder, pero veo que las fotos andan ya por toda la internuez


From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Birthday (was Re: Uptime found. Thanks to all)
Date: 31 Jul 92 22:15:20 GMT

In article <> duperval@ERE.UMontreal.CA (Duperval Laurent) writes:
>P.S. BTW, noone answered yet: when is Linux’s birthday? Let’s have a

I couldn’t for the life of me remember when it all happened, and I don’t
keep a diary, so I can’t give you any exact dates for when linux “was
born”. But I did start to wonder, so I started ftp’ing around for
archives of the comp.os.minix group (where I announced it), and this is
what I came up with (with some editing).

This is just a sentimental journey into some of the first posts
concerning linux, so you can happily press ‘n’ now if you actually
thought you’d get anything technical.

Cuando vea mi pecho lobo y le cuente lo del SO se le caen las bragas

Menudo fiestón que hemos montado, con birra y todo. Con mis aires de Stephen Hawkins cae alguna fijo.

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Gcc-1.40 and a posix-question
> Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI>
> Date: 3 Jul 91 10:00:50 GMT
> Hello netlanders,
> Due to a project I’m working on (in minix), I’m interested in the posix
> standard definition. Could somebody please point me to a (preferably)
> machine-readable format of the latest posix rules? Ftp-sites would be
> nice.

The project was obviously linux, so by July 3rd I had started to think
about actual user-level things: some of the device drivers were ready,
and the harddisk actually worked. Not too much else.

> As an aside for all using gcc on minix – [ deleted ]

Just a success-report on porting gcc-1.40 to minix using the 1.37
version made by Alan W Black & co.

> Linus Torvalds
> PS. Could someone please try to finger me from overseas, as I’ve
> installed a “changing .plan” (made by your’s truly), and I’m not certain
> it works from outside? It should report a new .plan every time.

So I was clueless – had just learned about named pipes. Sue me. This
part of the post got a lot more response than the actual POSIX query,
but the query did lure out arl from the woodwork, and we mailed around
for a bit, resulting in the Linux subdirectory on

Then, almost two months later, I actually had something working: I made
sources for version 0.01 available on nic sometimes around this time.
0.01 sources weren’t actually runnable: they were just a token gesture
to arl who had probably started to despair about ever getting anything.
This next post must have been from just a couple of weeks before that

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: What would you like to see most in minix?
> Summary: small poll for my new operating system
> Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
> Date: 25 Aug 91 20:57:08 GMT
> Organization: University of Helsinki
> Hello everybody out there using minix -
> I’m doing a (free) operating system (just a hobby, won’t be big and
> professional like gnu) for 386(486) AT clones. This has been brewing
> since april, and is starting to get ready. I’d like any feedback on
> things people like/dislike in minix, as my OS resembles it somewhat
> (same physical layout of the file-system (due to practical reasons)
> among other things).
> I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work.
> This implies that I’ll get something practical within a few months, and
> I’d like to know what features most people would want. Any suggestions
> are welcome, but I won’t promise I’ll implement them :-)
> Linus (
> PS. Yes – it’s free of any minix code, and it has a multi-threaded fs.
> It is NOT protable (uses 386 task switching etc), and it probably never
> will support anything other than AT-harddisks, as that’s all I have :-( .

Judging from the post, 0.01 wasn’t actually out yet, but it’s close. I’d
guess the first version went out in the middle of September -91. I got
some responses to this (most by mail, which I haven’t saved), and I even
got a few mails asking to be beta-testers for linux.

Joder... No debí mezclar... ¿Hago una capa scsi para los discos IDE?

La tengo en el bote. En cuanto vea mi pecholobo y le cuente lo del SO se le caen las bragas

After that just a few general answers to quesions on the net:

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Re: What would you like to see most in minix?
> Summary: yes – it’s nonportable
> Message-ID: <1991Aug26.110602.19446@klaava.Helsinki.FI>
> Date: 26 Aug 91 11:06:02 GMT
> Organization: University of Helsinki
> In article <> jkp@cs.HUT.FI (Jyrki Kuoppala) writes:
> >> [re: my post about my new OS]
> >
> >Tell us more! Does it need a MMU?
> Yes, it needs a MMU (sorry everybody), and it specifically needs a
> 386/486 MMU (see later).
> >
> >>PS. Yes – it’s free of any minix code, and it has a multi-threaded fs.
> >>It is NOT protable (uses 386 task switching etc)
> >
> >How much of it is in C? What difficulties will there be in porting?
> >Nobody will believe you about non-portability ;-) , and I for one would
> >like to port it to my Amiga (Mach needs a MMU and Minix is not free).
> Simply, I’d say that porting is impossible. It’s mostly in C, but most
> people wouldn’t call what I write C. It uses every conceivable feature
> of the 386 I could find, as it was also a project to teach me about the
> 386. As already mentioned, it uses a MMU, for both paging (not to disk
> yet) and segmentation. It’s the segmentation that makes it REALLY 386
> dependent (every task has a 64Mb segment for code & data – max 64 tasks
> in 4Gb. Anybody who needs more than 64Mb/task – tough cookies).
> It also uses every feature of gcc I could find, specifically the __asm__
> directive, so that I wouldn’t need so much assembly language objects.
> Some of my “C”-files (specifically mm.c) are almost as much assembler as
> C. It would be “interesting” even to port it to another compiler (though
> why anybody would want to use anything other than gcc is a mystery).

[ editors note: linux has in fact gotten more portable with newer
versions: there was a lot more assembly in the early versions. Not that
anybody in their right mind would try to port it even now ]

¿No vá la tía y me dice que el que le pone es el tal Allan Cox de 4ºC? Qué bajón

¿No vá la tía y me dice que el que le pone es el tal Allan Cox de 4ºC? Qué bajón

> Unlike minix, I also happen to LIKE interrupts, so interrupts are
> handled without trying to hide the reason behind them (I especially like
> my hard-disk-driver. Anybody else make interrupts drive a state-
> machine?). All in all it’s a porters nightmare.
> >As for the features; well, pseudo ttys, BSD sockets, user-mode
> >filesystems (so I can say cat /dev/tcp/,
> >window size in the tty structure, system calls capable of supporting
> >POSIX.1. Oh, and bsd-style long file names.
> Most of these seem possible (the tty structure already has stubs for
> window size), except maybe for the user-mode filesystems. As to POSIX,
> I’d be delighted to have it, but posix wants money for their papers, so
> that’s not currently an option. In any case these are things that won’t
> be supported for some time yet (first I’ll make it a simple minix-
> lookalike, keyword SIMPLE).
> Linus (
> PS. To make things really clear – yes I can run gcc on it, and bash, and
> most of the gnu [bin/file]utilities, but it’s not very debugged, and the
> library is really minimal. It doesn’t even support floppy-disks yet. It
> won’t be ready for distribution for a couple of months. Even then it
> probably won’t be able to do much more than minix, and much less in some
> respects. It will be free though (probably under gnu-license or similar).

Well, obviously something worked on my machine: I doubt I had yet gotten
gcc to compile itself under linux (or I would have been too proud of it
not to mention it). Still before any release-date.

Then, October 5th, I seem to have released 0.02. As I already
mentioned, 0.01 didn’t actually come with any binaries: it was just
source code for people interested in what linux looked like. Note the
lack of announcement for 0.01: I wasn’t too proud of it, so I think I
only sent a note to everybody who had shown interest.

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Free minix-like kernel sources for 386-AT
> Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
> Date: 5 Oct 91 05:41:06 GMT
> Organization: University of Helsinki
> Do you pine for the nice days of minix-1.1, when men were men and wrote
> their own device drivers? Are you without a nice project and just dying
> to cut your teeth on a OS you can try to modify for your needs? Are you
> finding it frustrating when everything works on minix? No more all-
> nighters to get a nifty program working? Then this post might be just
> for you :-)
> As I mentioned a month(?) ago, I’m working on a free version of a
> minix-lookalike for AT-386 computers. It has finally reached the stage
> where it’s even usable (though may not be depending on what you want),
> and I am willing to put out the sources for wider distribution. It is
> just version 0.02 (+1 (very small) patch already), but I’ve successfully
> run bash/gcc/gnu-make/gnu-sed/compress etc under it.
> Sources for this pet project of mine can be found at
> ( in the directory /pub/OS/Linux. The directory also
> contains some README-file and a couple of binaries to work under linux
> (bash, update and gcc, what more can you ask for :-) . Full kernel
> source is provided, as no minix code has been used. Library sources are
> only partially free, so that cannot be distributed currently. The
> system is able to compile “as-is” and has been known to work. Heh.
> Sources to the binaries (bash and gcc) can be found at the same place in
> /pub/gnu.
> ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled
> (and gcc-1.40, possibly 1.37.1, haven’t tested), and you need minix to
> set it up if you want to run it, so it is not yet a standalone system
> for those of you without minix. I’m working on it. You also need to be
> something of a hacker to set it up (?), so for those hoping for an
> alternative to minix-386, please ignore me. It is currently meant for
> hackers interested in operating systems and 386’s with access to minix.
> The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If
> you are still interested, please ftp the README/RELNOTES, and/or mail me
> for additional info.
> I can (well, almost) hear you asking yourselves “why?”. Hurd will be
> out in a year (or two, or next month, who knows), and I’ve already got
> minix. This is a program for hackers by a hacker. I’ve enjouyed doing
> it, and somebody might enjoy looking at it and even modifying it for
> their own needs. It is still small enough to understand, use and
> modify, and I’m looking forward to any comments you might have.
> I’m also interested in hearing from anybody who has written any of the
> utilities/library functions for minix. If your efforts are freely
> distributable (under copyright or even public domain), I’d like to hear
> from you, so I can add them to the system. I’m using Earl Chews estdio
> right now (thanks for a nice and working system Earl), and similar works
> will be very wellcome. Your (C)’s will of course be left intact. Drop me
> a line if you are willing to let me use your code.
> Linus
> PS. to PHIL NELSON! I’m unable to get through to you, and keep getting
> “forward error – strawberry unknown domain” or something.

Destinado a caducar sin remedio

Destinado a caducar sin remedio

Well, it doesn’t sound like much of a system, does it? It did work, and
some people even tried it out. There were several bad bugs (and there
was no floppy-driver, no VM, no nothing), and 0.02 wasn’t really very

0.03 got released shortly thereafter (max 2-3 weeks was the time between
releases even back then), and 0.03 was pretty useable. The next version
was numbered 0.10, as things actually started to work pretty well. The
next post gives some idea of what had happened in two months more…

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Re: Status of LINUX?
> Summary: Still in beta
> Message-ID: <1991Dec19.233545.8114@klaava.Helsinki.FI>
> Date: 19 Dec 91 23:35:45 GMT
> Organization: University of Helsinki
> In article <> (Miquel van Smoorenburg) writes:
> >Hello *,
> > I know some people are working on a FREE O/S for the 386/486,
> >under the name Linux. I checked now and then, to see what was
> >happening. However, for the time being I am without FTP access so I don’t
> >know what is going on at the moment. Could someone please inform me about it?
> >It’s maybe best to follow up to this article, as I think that there are
> >a lot of potential interested people reading this group. Note, that I don’t
> >really *have* a >= 386, but I’m sure in time I will.
> Linux is still in beta (although available for brave souls by ftp), and
> has reached the version 0.11. It’s still not as comprehensive as
> 386-minix, but better in some respects. The “Linux info-sheet” should
> be posted here some day by the person that keeps that up to date. In
> the meantime, I’ll give some small pointers.
> First the bad news:
> – Still no SCSI: people are working on that, but no date yet.
> Thus you need a AT-interface disk (I have one report that it
> works on an EISA 486 with a SCSI disk that emulates the
> AT-interface, but that’s more of a fluke than anything else:
> ISA+AT-disk is currently the hardware setup)

As you can see, 0.11 had already a small following. It wasn’t much, but
it did work.

> – still no init/login: you get into bash as root upon bootup.

That was still standard in the next release.

> – although I have a somewhat working VM (paging to disk), it’s not
> ready yet. Thus linux needs at least 4M to be able to run the
> GNU binaries (especially gcc). It boots up in 2M, but you
> cannot compile.

I actually released a 0.11+VM version just before Christmas -91: I
didn’t need it myself, but people were trying to compile the kernel in
2MB and failing, so I had to implement it. The 0.11+VM version was
available only to a small number of people that wanted to test it out:
I’m still surprised it worked as well as it did.

> – minix still has a lot more users: better support.
> – it hasn’t got years of testing by thousands of people, so there
> are probably quite a few bugs yet.
> Then for the good things..
> – It’s free (copyright by me, but freely distributable under a
> very lenient copyright)

The early copyright was in fact much more restrictive than the GNU
copyleft: I didn’t allow any money at all to change hands due to linux.
That changed with 0.12.

> – it’s fun to hack on.
> – /real/ multithreading filesystem.
> – uses the 386-features. Thus locked into the 386/486 family, but
> it makes things clearer when you don’t have to cater to other
> chips.
> – a lot more… read my .plan.
> /I/ think it’s better than minix, but I’m a bit prejudiced. It will
> never be the kind of professional OS that Hurd will be (in the next
> century or so :) , but it’s a nice learning tool (even more so than
> minix, IMHO), and it was/is fun working on it.
> Linus (
> —- my .plan ————————–
> Free UNIX for the 386 – coming 4QR 91 or 1QR 92.
> The current version of linux is 0.11 – it has most things a unix kernel
> needs, and will probably be released as 1.0 as soon as it gets a little
> more testing, and we can get a init/login going. Currently you get
> dumped into a shell as root upon bootup.
> Linux can be gotten by anonymous ftp from ‘’ (
> in the directory ‘/pub/OS/Linux’. The same directory also contains some
> binary files to run under Linux. Currently gcc, bash, update, uemacs,
> tar, make and fileutils. Several people have gotten a running system,
> but it’s still a hackers kernel.
> Linux still requires a AT-compatible disk to be useful: people are
> working on a SCSI-driver, but I don’t know when it will be ready.
> There are now a couple of other sites containing linux, as people have
> had difficulties with connecting to nic. The sites are:
> Tupac-Amaru.Informatik.RWTH-Aachen.DE (
> directory /pub/msdos/replace
> (
> directory /pub/linux

Pese a la edad no pierdo mi atracción animal. No, no, ext2, nada de FAT.

Pese a la edad no pierdo mi atracción animal. No, no, ext2, nada de FAT.

> There is also a mailing list set up ‘’.
> To join, mail a request to ‘’.
> It’s no use mailing me: I have no actual contact with the mailing-list
> (other than being on it, naturally).
> Mail me for more info:
> Linus (torvalds@kruuna.Helsinki.FI)
> 0.11 has these new things:
> – demand loading
> – code/data sharing between unrelated processes
> – much better floppy drivers (they actually work mostly)
> – bug-corrections
> – support for Hercules/MDA/CGA/EGA/VGA
> – the console also beeps (WoW! Wonder-kernel :-)
> – mkfs/fsck/fdisk
> – US/German/French/Finnish keyboards
> – settable line-speeds for com1/2

As you can see: 0.11 was actually stand-alone: I wrote the first
mkfs/fsck/fdisk programs for it, so that you didn’t need minix any more
to set it up. Also, serial lines had been hard-coded to 2400bps, as that
was all I had.

> Still lacking:
> – init/login
> – rename system call
> – named pipes
> – symbolic links

Well, they are all there now: init/login didn’t quite make it to 0.12,
and rename() was implemented as a patch somewhere between 0.12 and 0.95.
Symlinks were in 0.95, but named pipes didn’t make it until 0.96.

> 0.12 will probably be out in January (15th or so), and will have:
> – POSIX job control (by tytso)
> – VM (paging to disk)
> – Minor corrections

Actually, 0.12 was out January 5th, and contained major corrections. It
was in fact a very stable kernel: it worked on a lot of new hardware,
and there was no need for patches for a long time. 0.12 was also the
kernel that “made it”: that’s when linux started to spread a lot faster.
Earlier kernel releases were very much only for hackers: 0.12 actually
worked quite well.

That’s all I found for 1991 – maybe it answered some questions.



Anda, ya se ha desmayado el cuarto friki.  Gano la apuesta seguro.[/caption]
Website Security Test