Ecualizador Paramétrico para Sub-Woofer

Hace tiempo fabrique un subwoofer para mi equipo de música, pero note que en algunas frecuencias el sonido era exagerado, y en otras era muy pobre. Esto se debe a que en la sala se producen reflejos del sonido y forman ondas estacionarias, que en algunos puntos estan fuera de fase con el subwoofer y lo anulan.

Una manera de atenuar este efecto es mediante el uso de un ecualizador paramétrico, un tipo de ecualizador que posee 3 controles: amplitud, frecuencia central, y ancho de banda. Con un ecualizador así, es posible buscar la frecuencia de resonancia de la sala y disminuirla, lo que contribuirá a mitigar el efecto producido por las ondas estacionarias.
Continuar leyendo “Ecualizador Paramétrico para Sub-Woofer”

Solucion a pkg-config-0.25_1 vs pkgconf-0.8.5

Si al intentar actualizar, por ejemplo con portmaster -a en FreeBSD 9 se obtiene el error:

===>  Installing for pkgconf-0.8.5

===>  pkgconf-0.8.5 conflicts with installed package(s):
      pkg-config-0.25_1

      They install files into the same place.
      Please remove them first with pkg_delete(1).
*** Error code 1

Stop in /usr/ports/devel/pkgconf.

La solución es muy sencilla, se debe reemplazar pkg-config por pkgconf, asi:

portmaster -o devel/pkgconf devel/pkg-config

Y luego proseguir normalmente.

Timer para ampliadora fotográfica

Recientemente empece a dedicarme a la fotografía analogica. Luego de un tiempo solamente escaneando mis negativos, decidi que era hora de empezar a hacer copias fotograficas, en papel quimico. Para esto me compre una Meopta Axomat II, una ampliadora sencilla para 35mm. Como no tenia temporizador, lo hago de la manera tradicional (a mano).

Pero como contar 10 segundos en la cabeza es muy aburrido, decidi construirme mi propio timer con cosas que tenia en la casa.

Aqui un video del proyecto durante la fase de debugging. El LED rojo simboliza la luz de seguridad, y el amarillo la ampliadora.

Como se puede ver en el video, consiste basicamente de un microcontrolador (en este caso, un PIC16F628A), que maneja los displays, buzzer, botones, pedal, y las luces.
Continuar leyendo “Timer para ampliadora fotográfica”

Recap

Bueno, pasaron 5 años (!) desde la ultima vez que postee. Y muchas cosas cambiaron por aca, asi que voy contando:

Cambié Solaris por FreeBSD

Desde que Oracle compró a Sun, y mató al proyecto OpenSolaris, dejaron de salir actualizaciones, y me vi usando un sistema que llevaba 1 año sin actualizar. Solaris Express 11 se actualiza raramente, como release, pero no se ofrecen actualizaciones individuales. Es totalmente inviable.

Asi que para seguir usando ZFS decidi pasarme a FreeBSD que lo soporta nativamente. Fue un cambio interesante, y hasta ahora paraece estar andando bien. Ya lleva mas de un año así.

Actualicé el servidor

En mi ultimo post todavia tenia un Athlon 64, socket 754. Pronto quedo desactualizado, y solo soportaba 3GB de RAM, no soportaba virtualizacion, y otros detalles. Asi que lo pase por un par de actualizaciones, hasta llegar en ultimo lugar, a un HP Microserver. Es chico, silencioso, y le sobra potencia. Soporta IPMI, por si algún dia compro una placa de acceso remoto, y es muy práctico.

Tambien tiene discos nuevos, los 4 de 500GB fueron reemplazados por 4 de 1TB en 2009.

Compré un router

Poco tiempo despues de todos los problemas con IPFilter y demas, me termine pasando definitivamente a un router. Primero use un WRT600N, pero no era lo suficientemente flexible, asi que lo deje como access point y lo reemplace por una Routerboard 333 que hasta ahora sigue funcionando perfectamente, y me permite tener IPv6 gracias a Tunnelbroker.

Fotografía

Y creo que el mas importante de los cambios es que me consegui un nuevo hobby: la fotografía. Asi que este blog va a empezar a tener mas posts sobre eso. De hecho el siguiente describirá como hacer un timer para una ampliadora fotográfica.

Ahorro de energía en Solaris 10

Cuando instale Solaris con los 4 discos de 500GB, no imaginé que iba a consumir 250W (segun apcaccess). Así que investigando un poco, encontre que hay un driver que maneja AMD PowerNOW! (y tambien Intel SpeedStep). Lo baje de OpenSolaris.org y lo instale sin problema alguno (ahora no lo estoy encontrando asi que se los subo aca). Luego de un touch /reconfigure y el correspondiente reinicio (por las dudas, habilite CoolN’Quiet y Q-Fan en el BIOS Setup), el consumo de la maquina cayó a la mitad. Muy recomendable para maquinas que no son usadas al 100% todo el tiempo.

IPFilter roto en Solaris 10u4

Tanto espere para Solaris 10u4 (que por fin incluye iscsitadm en la rama estable), para encontrarme 1000 problemas con el NAT. Como es mi primera vez con IPFilter, sospechaba de mis reglas, y llegue a un momento que pense que la configuración estaba razonablemente bien. Pero no, el Messenger se seguia desconectando. No me quedo mas remedio que preguntar en un foro, y tuve la suerte de que alguien tenia el mismo problema, y lamentablemente, el IPFilter de Solaris10u4 esta pinchado.

Asi que no me quedo mas remedio que actualizar, pero me lleve una sorpresa bastante desagradable al intentar seguir las instrucciones para actualizar IPFilter de la pagina de Darren. Estas instrucciones estan terriblemente desactualizadas, y Solaris 10u4, ademas, incluye muchos cambios en el stack TCP/IP. Notablemente, no necesita mas el modulo pfil, el modulo que permitia a IPFilter hablar con STREAMS.

Las instrucciones de actualizacion de IPFilter las encontre al final en un post del mismo Darren, y que resumire a continución:

  1. Bajar IPFilter 2.4.24 con parches para S10u4, o superior (yo baje el ultimo que habia, 2.4.27)
  2. Compilar con make y cc (NO gmake ni gcc)
  3. SunOS5/replace y fijarse si hay errores (habra de iptest, que no viene con Solaris)
  4. SunOS5/replace -f
  5. touch /reconfigure
  6. reboot con shutdown -y -i6 -g0

Con algo de suerte, tendremos el nuevo modulo en el Kernel. Pero ojo: esta version de IPFilter, NO SOPORTA zonas con TCP/IP exclusivo. La de Sun si, asi que si necesitamos esta funcionalidad, habra que seguir esperando a Sun.

Problemas con NAT en Solaris 10

Rapido: si intentan NATear con una placa con TCP Checksum Offloading (nge, de Nvidia o elxl de 3COM por ejemplo), el NAT no funciona bien. Hay que deshabilitar el TCP Checksum Offloading asi:

  1. Agregamos la linea ” set ip:dohwcksum=0 ” a /etc/system
  2. touch /reconfigure
  3. Reiniciar con shutdown -y -i6 -g0

Arrancar servicios propios con SMF

Como muchos sabran, los servicios en Solaris 10 ya no se inician como SysVInit, tan 90s… lo nuevo es SMF – Service Management Framework, parte del Self Healing de Solaris (whatever…). En fin, arrancar nuestros propios servicios a través de SMF es mas sencillo de lo que uno esperaría. Solo hay que escribir nuestra propia descripcion de servicio (en XML, que tan de moda esta), y agregarlo.

Les dejo este link que enseña como hacerlo com MySQL, y como verán, lo unico que hace es avisarle a SMF de que servicios depende MySQL (en este caso, red y filesystem), e indicarle donde están los scripts de arrance (scripys SysVInit pero no le digan a nadie shh!!). Y por ultimo, tambien podemos definir con que usuario debe correr el script.

Como siempre, descubri por las malas que el usuario tiene que tener un directorio home para que se ejecuten los scripts. Como home, obviamente es conveniente poner el directorio del programa en cuestión.

Partiendo de ese sencillo ejemplo podemos escribir nuestras propias descripciones de servicio y hacer que arranquen o se detengan via SMF, y verán como les facilita la vida (no mas update-rc.d xxx start 99 2 3 .).Y como seria un mal administrador si quisiera reinventar todo, aca hay una coleccion de scripts para varios programas.

Setear librerias compartidas en Solaris 10

En Solaris 10, para setear las librerias compartidas (por defecto, /lib y /usr/lib), se usa el comando crle.

Ejemplo rapido: para agregar /usr/local/lib al default hacemos:

crle -l /lib:/usr/lib:/usr/local/lib

y listo. Notese que se escribe el path completo, no es que se agrega al final

El Server (primera parte)

Hace unos meses me di cuenta que la mayoria del tiempo, mi computadora esta encendida, pero no esta haciendo nada. O mejor dicho, esta desperdiciando cualquier cantidad de energia, y hace muy poco. Es que, hasta ese entonces, casi todo el tiempo mi computadora se la pasaba bajando archivos del eMule.

También, hace varios años (en 2004), me di cuenta que los “broadband routers” comunes, no tienen la potencia de CPU necesaria para mantener abiertas suficientes conexiones de P2P, y se complica aún mas cuando son varios los usuarios que intentan bajar archivos.

Y por ultimo, el problema mas grave que note, es el escaso ancho de banda de salida que posee mi conexion ADSL (1248/256kbps). Esto hace que sea imposible mantener una buena velocidad de bajada con eMule si hay otro usuario en la red que esta usando otro programa P2P. Es que el emule exige un minimo de 10kBps de subida para permitir una buena velocidad de bajada, o de lo contrario el ratio hace que se limite la bajada a 3 veces la velocidad de subida. Cuando mi hermano abria el eMule o el BitTorrent, ocurrian dos cosas: 1) se saturaba el ancho de banda de salida (por lo que tenia que funcionar el traffic shaping para mejorar las cosa). y 2) el ratio entraba en funcionamiento, y todos saliamos perdiendo, a pesar de que efectivamente estabamos compartiendo mas archivos y habia una buena velocidad de subida.

Es asi que empieza la historia del server. A mediados de 2001, habia puesto ADSL en casa. Como ya teniamos una red, era de esperarse que las demas computadoras pudieran acceder a internet. ICS y WinGate mediante, configure la red y todo funcionaba bien. Luego, encontre en la basura de una casa de computación 2 viejas maquinas Acer 486, las CPU completas, con placa de Red y todo. Eso me llevo a investigar y al poco tiempo, una de esas maquinas paso a ser el router principal, con Linux en su distro FloppyFW.

Con el tiempo esa maquina evoluciono, y paso a ser un Cyrix 5×86 133, con mas RAM. Pero siempre habia querido tener un proxy-caché con Squid, asi que conseguí una controladora SCSI (AHA-2940UW) y un disco (Seagate Barracuda 7200 SCSI). Esto funciono un par de meses hasta que el disco dijo basta, y volvi al floppyfw. Y asi funciono todo durante muchos años.

A finales de 2006 me convenci de instalar una vieja P3 que tenia, con un disco de 4GB, y ponerla a rutear. Descubri el IPCop (del cual hablare mas adelante), y le hice unas modificaciones y este paso a ser el servidor principal. Es un linux completo, con proxy, NAT, traffic shaping, miles de cosas interesantes. Incluso, un paquete que hace que funcione con la UPS que le puse (una APC BK500EI via USB).

Como habia dicho, lo que mas me molestaba era el hecho del ancho de banda desperdiciado, y fue asi como se me ocurrio que seria bueno que todos podamos usar el mismo eMule. Busque, y encontre el famoso MLDonkey. Un cliente eMule/BitTorrent/etc multiplataforma, y mas importante aún, multiusuario. En pocas horas estaba instalado y bajando archivos en la vieja Pentium 3. Por fin mi computadora podia descansar. Y de hecho ahora lo hace: durante la noche, o cuando no estoy, se la pasa en estado S3 (Suspend-to-RAM), mientras los archivos siguen bajando tranquilamente en el server, sin ocupar valiosos recursos de mi PC.

Ademas de eso, mi server hacia las veces de server RSYNC para los backups, y note que era extremadamente pesado para la CPU y para el disco, a tal punto que el uptime mostraba un system load de 4 o 5. Llegue a la conclusion de que necesitaria una CPU mas potente, y mas RAM. Iba a instalar un Linux y tener todo ahi. Luego me di cuenta que podia hacer mucho mas: podria poner varios discos y hacer un NAS. Podria instalar un X y dejar algunas aplicaciones corriendo en el servidor. Las cosas se volvian interesantes.

Investigando, descubri que Sun hace unos meses habia presentado ZFS, el Mejor Sistema De Archivos Que Existe, o asi lo publicitaban. Las cosas parecen ser verdad, asi que baje el Solaris y lo probe. Nada mal. Busque una maquina usada en deremate y encontre un motherboard Asus que tiene 8 puertos SATA. Charly me vendio un micro Athlon64, socket 754 para dicho mother. Tenia 1GB de DDR400 dando vueltas que ya no usaba, y una placa SCSI (para aprovecharla y dejar libres los puertos SATA para el NAS). Compre ademas 2 discos SCSI de 10K RPM para tener mejor acceso al Squid. Y estoy investigando, y decidi que para el NAS, como primera instancia, voy a usar 4 discos Samsung de 500GB en RAID-Z (1,5TB en total).

Los discos SCSI fallaron (y ademas estoy estudiando) asi que por ahora el proyecto esta en espera, pero durante los proximos meses, voy a contarles por aca el progreso del proyecto, las dificultades, y las cosas que voy a ir descubriendo. Asi que por lo pronto, lo unico que les puedo dar son algunas especificaciones:

CPU: Athlon64 2800+
Motherboard: Asus K8N4-E Deluxe
Memoria: 1024MB Kingston DDR400 CL3
Controladora SCSI: Adaptec AHA-2940UW PCI
Discos SCSI: Seagate Cheetah 10K 36.4GB (2, RAID-1)
Discos SATA: Samsung 500GB SATA (4, RAID-Z)
Sistema Operativo: Solaris Express b64a