Archivo

Archivo para la categoría ‘Hardware’

Reset de Samsung CLP-320

martes, 26 de septiembre de 2017 2 comentarios

La Samsung CLP-320 es una impresora láser color que compré hace ya algunos años y en la que siempre he utilizado tóner original. Llegó un día en el que me dijo que el tóner magenta se le había acabado la vida útil y compré un pack de negro, magenta, cian y amarillo. Sustituí el color correspondiente, la impresora hizo su verificación interna y me seguía diciendo que el magenta estaba agotado.

Pensando que el tóner que había comprado podía tener el «chip» defectuoso (aquel que lleva la cuenta de páginas que hay impresas), opté por comprar un tóner compatible (para no invertir todavía más dinero) y cuál fue mi sorpresa que me dijo lo mismo.

Localicé el servicio técnico que se encuentra en Madrid para las impresoras de Samsung y me informaron que probablemente el problema estaba en la placa o la conexión que une ésta al chip del tóner. Me informaron que el envío de la impresora allí y la sustitución de la placa me iba a salir caro. Así que tenía un pack nuevo de tóners y una impresora muerta de la risa porque el sistema de cuenta de hojas estaba estropeado. Indignación absoluta, porque para eso hubiese estado utilizando tóner reciclado desde el primer día.

Acabé comprando otra impresora de otra marca y hasta hoy, porque justo hoy me había decidido a probar a pagar 14€ por un programa que, junto a la informción del número de serie de tu impresora y su versión de firmware, te reseteaba el contador de tóner y te dejaba imprimir lo que quisieras. Pero antes de ello, tras leer por ahí, me decanté por probar a poner cinta aislante en el tóner afectado, desde el segundo contacto hasta el último de la derecha, cerrar la tapa, comprobar que me dice que le falta el magenta, abrir la tapa, quitar la cinta aislante y voilà, el tóner vuelve a estar al 100% de capacidad.

No sé si habrá sido casualidad de que se resetease por acción divina o porque el tema de la cinta aislante esquiva el problema, pero lo volveré a utilizar la próxima vez que se me agote un color y simplemente quiera imprimir en negro, por ejemplo.

Moonlight en una Raspberry Pi 2 modelo B

miércoles, 25 de mayo de 2016 Sin comentarios

Debido a problemas legales, Limelight tuvo que cambiar el nombre por el de Moonlight, una aplicación que permite hacer streaming de juegos de un ordenador a otro dispositivo (un Android o una Raspberry Pi entre otros) aprovechando la tecnología de Nvidia. Hace algún tiempo explicaba cómo instalar y configurar la aplicación en una Raspberry Pi de primera generación y el asunto no ha cambiado mucho.

Editamos el fichero de repositorios añandiendo al fichero «/etc/apt/sources.list» la siguiente nueva línea :

deb http://archive.itimmer.nl/raspbian/moonlight jessie main

Actualizamos el sistema e instalamos la aplicación:

apt-get update

apt-get upgrade

apt-get install moonlight-embedded

Emparejaremos nuestra Raspberry con nuestro ordenador (suponiendo que tenga la IP 192.168.1.5):

moonlight pair 192.168.1.5

El comando anterior nos dará un código que tendremos que poner en el ordenador a través de un diálogo de GeForce Experience.

Una vez emparejados, sólo tendremos que detener Kodi (si es que lo tenemos en marcha) y lanzar Moonlight que, automáticamente, activará el Big Picture de Steam:

sudo systemctl stop mediacenter

moonlight stream -1080 -60fps 192.168.1.5

Para detener el streaming y volver a arrancar Kodi podemos utilizar los siguientes comandos:

moonlight quit

sudo systemctl start mediacenter

Si además tenemos un mando de PS2 conectado por USB (el de la Xbox 360 funciona sin tener que tocar nada) a través de un adaptador, deberemos realizar un mapeado del mismo. En primer lugar tendremos que identificar dónde está nuestro mando y si ha sido reconocido correctamente. Para tal fin podremos utilizar evtest:

sudo apt-get install evtest
sudo evtest

Una vez localizada la ruta, realizaremos el mapeado del mismo y lo almacenaremos en un fichero (en mi caso el mando estaba en /dev/input/event5 y el fichero quería que fuese ps2-1.map). Nos irá pidiendo que pulsemos los botones adecuados del mando y lo único a tener en cuenta es que pide un botón más de los que tenemos disponibles debido a que usa el esquema de Xbox 360.

moonlight map -input /dev/input/event5 ps2-1.map

Así que, finalmente, ejecutaremos lo siguiente:

moonlight stream -1080 -60fps -mapping /home/osmc/ps2-1.map 192.168.1.5

Adjunto el contenido de mi fichero .map por si a alguien le resulta de utilidad:

abs_x = 0
abs_y = 0
abs_z = -1
reverse_x = false
reverse_y = true
abs_rx = 5
abs_ry = 2
abs_rz = -1
reverse_rx = false
reverse_ry = true
abs_deadzone = -31824
abs_dpad_x = 16
abs_dpad_y = 17
reverse_dpad_x = false
reverse_dpad_y = false
btn_north = 288
btn_east = 289
btn_south = 290
btn_west = 291
btn_select = 296
btn_start = 297
btn_mode = 296
btn_thumbl = 298
btn_thumbr = 299
btn_tl = 294
btn_tr = 295
btn_tl2 = 292
btn_tr2 = 293
btn_dpad_up = -1
btn_dpad_down = -1
btn_dpad_left = -1
btn_dpad_right = -1

Sobre los resultados obtenidos, cabe destacar que entre el nuevo software y la mejora de la potencia de la Raspberry Pi (de la 1 a la 2 hay un abismo), el resultado a través de cable de red es sobresaliente. Probado con Left4Dead 2 y Grid 2 sin ningún tipo de retardo apreciable en cuanto a la imagen/sonido y el control.

Ambilight en la Raspberry Pi 2

jueves, 7 de enero de 2016 Sin comentarios

Recientemente he migrado a la Raspberry Pi 2 y he tenido que realizar algunos cambios en cuanto al cableado del ambilight casero que tenía montado utilizando Hyperion.

En la siguiente imagen se puede observar la disposiciones de pines de la antigua Raspberry Pi, donde lo que nos interesaba era el pin GPIO 10 (MOSI), GPIO11 (CLK) y alguno de los GND (ground).

raspberrypirev2pinout

En cambio, se puede apreciar que la posición de dichos pines ha sigo ligeramente alterada en el modelo RaspPi2, donde necesitaremos hacer uso de los pines 9 (GND), 19 (MOSI) y 23 (CLK):

RP2_PinoutAclarar también que necesitaremos activar el SPI en nuestro OSMC como ya describí en una entrada anterior.

NAS ZyXel 325-V2

lunes, 14 de diciembre de 2015 Sin comentarios

El NAS ZyXel 325-V2 se diferencia de la primera versión en un cambio estético de la carcasa de plástico y en una mejora del ventilador posterior que parece hacer menor ruido. A parte de eso dispondremos de un sistema de almacenamiento en red con dos bahías para discos duros SATA de 3’5″ y 2’5″ con soporte para RAID 0, 1 y JBOD, tarjeta de red Gigabit, dos USB 2.0 traseros y uno 3.0 frontal frontal con un consumo eléctrico que varía de entre 15W con dos discos duros en marcha a 7W cuando pasa a modo en reposo.

El panel de administración puede parece bastante simple y no tan completo como los NAS de Synologic, pero la diferencia de precio también es bastante notable. Gracias a la comunidad estas diferencias intentan cubrirses con paquetes de software de terceros.

Como vamos a hacer del NAS un servicio de red fijo, lo que nos va a interesar es darle una IP fija a través de la configuración del servidor de DNS. Para eso se necesita averiguar su dirección MAC de forma fácil con el siguiente comando (sabiendo previamente la IP que se le ha sido asignado previamente o el nombre del equipo):

ping 192.168.1.55 -c 1

arp -a

A través de Samba accederemos a «smb://IP-NAS/admin/zy-pkgs/» y crearemos un fichero «web_prefix» que contendrá la siguiente URL:

http://downloads.zyxel.nas-central.org/Users/Mijzelf/zypkg-repo/

Desde el panel web de administración del NAS iremos a la sección «Firmware/Packages» y, después de actualizar el Firmware si existe alguna versión posterior, le daremos al botón de «Acceder listado desde Internet». Aparecerá un único paquete llamado «MetaRepository» que tendremos que seleccionar e instalar. Tras esto ya podremos instalar FFP (desde el cual podremos instalar repositorios con uwsiteloader), RandomTools, NFS y pyLoad por ejemplo.

Para instalar nuestro software de descargas favorito (MlDonkey), entraremos por SSH al NAS y ejecutaremos lo siguiente:

su

uwsiteloader.sh (seguimos los pasos del asistente)

slacker -U

slacker -i mldonkey

exit

Debido a que queremos tener todo lo relacionado con MlDonkey guardado en disco duro por temas de espacio, lo que haremos es un enlace simbólico de la siguiente forma y lanzaremos el proceso para que genere la estructura de carpetas:

mkdir /mnt/HD_a2/mldonkey

cd /mnt/HD_a2

chmod -R 777 mldonkey/

ln -s /mnt/HD_a2/mldonkey/ .mldonkey

mlnet

Cerraremos el proceso anterior con un simple CTRL+C y empezaremos a configurarlo:

vim .mldonkey/downloads.ini (y editamos las ip’s permitidas añadiendo 192.168.1.0/24)

mkdir /mnt/HD_a2/mldonkey/logs

Generaremos un fichero de configuración en «/mnt/HD_a2/mldonkey/mldonkey-server» con el siguiente contenido:

MLDONKEY_DIR=/mnt/HD_a2/mldonkey
MLDONKEY_USER=admin
MLDONKEY_GROUP=everyone
MLDONKEY_UMASK=0022
LAUNCH_AT_STARTUP=true

Crearemos el script que se encargará de gestionar el servicio «/mnt/HD_a2/mldonkey/mldonkey.sh» con el siguiente contenido:

 

#!/ffp/bin/sh
#
# Original file :
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
#
#
# This file has been rewritten by Sylvain Le Gall <gildor@debian.org>
# and Samuel Mimram <smimram@debian.org> for the mldonkey package.
#
### BEGIN INIT INFO
# Provides: mldonkey-server
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Server for the mldonkey peer-to-peer downloader.
# Description: Server for the mldonkey peer-to-peer downloader.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mlnet
EXEC=/usr/local/zy-pkgs/ffproot/ffp/bin/$NAME
DESC=»MLDonkey»
CONFIG=/mnt/HD_a2/mldonkey/mldonkey-server
PIDDIR=/var/run/mldonkey
PIDFILE=$PIDDIR/$NAME.pid
LOGFILE=/mnt/HD_a2/mldonkey/logs/mldonkey-server.log
SERVERLOG=/mnt/HD_a2/mldonkey/logs/mlnet.log

test -e $CONFIG || exit 0

set -e

Warn ()

{
echo «$*» >&2
}

Error ()
{
code=$1
shift

echo «.»
Warn «$DESC: $NAME [ERROR] $@»
exit $code
}

StartErrorCheck ()
{
if [ -f «$SERVERLOG» ] && tail -n 2 «$SERVERLOG» | grep -qi ‘aborting’ ; then
Warn «$DESC: $NAME [ERROR] server start error»
tail –verbose $SERVERLOG
exit 1
fi
}

. $CONFIG

# Look for the default locale
if [ -f «/etc/default/locale» ]; then
. /etc/default/locale
export LANG
fi

if [ -n «$MLDONKEY_UMASK» ]; then
umask $MLDONKEY_UMASK
fi
# /var/run might be on tempfs, see #354701.
if [ ! -d /var/run/mldonkey ]; then
mkdir -m 755 /var/run/mldonkey
fi
if [ ! -d /var/log/mldonkey ]; then
mkdir -m 755 /var/log/mldonkey
fi
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /var/run/mldonkey
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /mnt/HD_a2/mldonkey/logs
fi

WRAPPER_OPTIONS=»–iosched idle»

# Set configuration value, from CONFIG
if [ -n «$MLDONKEY_USER» ] && [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chuid $MLDONKEY_USER:$MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_DIR» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –chdir $MLDONKEY_DIR»
fi

if [ -n «$MLDONKEY_GROUP» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –group $MLDONKEY_GROUP»
fi

if [ -n «$MLDONKEY_UMASK» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –umask $MLDONKEY_UMASK»
fi

if [ -n «$MLDONKEY_NICENESS» ]; then
WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –nicelevel $MLDONKEY_NICENESS»
fi

case «$1» in
start|force-start)
echo -n «Starting $DESC: $NAME»

if [ «x$LAUNCH_AT_STARTUP» != «xtrue» ] && [ «x$1» = «xstart» ]; then
Error 0 «configuration file prevent $NAME to be started (use force-start).»
fi

if [ -z «$MLDONKEY_DIR» ] || [ ! -d «$MLDONKEY_DIR» ]; then
if [ -z «$MLDONKEY_DIR» ]; then
MLDONKEY_DIR=»(unset)»
fi
Error 1 «$MLDONKEY_DIR is not a valid directory.»
fi

if [ ! -f «$MLDONKEY_DIR/downloads.ini» ]; then
Error 1 «$MLDONKEY_DIR/downloads.ini is not a valid file.»
fi

#USER=`/usr/bin/stat –format=»%U» «$MLDONKEY_DIR/downloads.ini»`

USER=»admin»

WRAPPER_OPTIONS=»$WRAPPER_OPTIONS –user $USER»

start-stop-daemon –start $WRAPPER_OPTIONS \
–pidfile $PIDFILE –background –exec $EXEC \
— -log_file $SERVERLOG -pid $PIDDIR 2>&1

StartErrorCheck

echo «.»
;;

stop)
echo -n «Stopping $DESC: $NAME»
start-stop-daemon –stop –oknodo –pidfile $PIDFILE –retry 30
echo «.»
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
Error 1 «Usage: $0 {start|stop|restart|force-reload|force-start}»
;;
esac

exit 0

Le daremos permiso de ejecución:

chmod u+x /mnt/HD_a2/mldonkey/mldonkey.sh

Y finalmente crearemos el script que se encargará de levantar el servicio al inicio en «/ffp/start/mldonkey-start.sh» con el siguiente contenido:

#!/ffp/bin/sh
# PROVIDE: mldonkey
# REQUIRE: LOGIN
/mnt/HD_a2/mldonkey/mldonkey.sh start

Le daremos permiso de ejecución:

chmod u+x /ffp/start/mldonkey-start.sh

Si deseamos que el NAS esté accesible por NFS, el camino rápido sería obtenido el identificador del usuario y del grupo correspondiente:

id -u admin

id -g admin

Editaremos el fichero «/etc/exports» con una línea similar a esta siendo 192.168.1.11 la IP que montará la unidad NFS  501 el id de usuario y grupo:

/mnt/HD_a2 192.168.1.11(rw,all_squash,anonuid=501,anongid=500)

Si intentamos colocar algo así como «192.168.1.0/24» no funcionará.

Reiniciaremos el servicio de NFS con el siguiente comando y ya lo tendremos listo en la red:

/usr/local/zy-pkgs/etc/init.d/NFS restart

En el equipo que queramos hacer uso de la unidad NFS (una Raspberry) tendremos que editar el fichero «/etc/fstab» añadiendo la siguiente línea:

192.168.1.10:/mnt/HD_a2    /mnt/nas nfs nouser,atime,auto,rw,dev,exec,suid 0   0

Prepararemos la carpeta donde estará del siguiente modo:

mkdir /mnt/nas

chown pi:users -R /mnt/nas

chmod 777 -R /mnt/nas

mount -a

 

 

 

 

Enlaces de interés:
http://forum.nas-central.org/viewtopic.php?f=249&t=15731&sid=b252ddb5624aca7cd22055ca774de8f7
http://zyxel.nas-central.org/wiki/3rd_party_zypkgs#MetaRepository
http://zyxel.nas-central.org/wiki/FFP_as_zypkg

Raspberry Pi y Limelight

miércoles, 4 de febrero de 2015 Sin comentarios

Limelight es un proyecto que trata de aprovechar la tecnología de streaming de las tarjetas gráficas de Nvidia para permitir jugar desde cualquier dispositivo. Entre ese «cualquier dispositivo» también entran las Rasperry Pi y, en mi caso, con Raspbmc.

Lo primero de todo será instalar la última versión disponible de Java (la versión de Oracle) ya que Limelight es un bonito jar. Para ello modificaremos los fuentes de APT para agregar los de Debian:

sudo vi /etc/apt/sources.list

Agregaremos esta línea

deb http://archive.raspberrypi.org/debian/ wheezy main

Haremos la importación de la clave, actualizaremos e instalaremos la versión 8 de java.

wget «http://archive.raspberrypi.org/debian/raspberrypi.gpg.key»

sudo apt-key add raspberrypi.gpg.key

sudo apt-get update

sudo apt-get install oracle-java8-jdk libopus-dev

Tras esto sólo nos queda descargar la última versión de Limelight de su Github.

wget –no-check-certificate «https://github.com/irtimmer/limelight-pi/releases/download/v1.2.1/limelight.jar»

Teniendo en cuenta que necesitamos un equipo que ejecute GeForce Experience 2.2.2 o superior (a parte de necesitar una gráfica Nvidia compatible), realizaremos el emparejamiento entre ambos dispositivos con el siguiente comando.

sudo java -jar limelight.jar pair 192.168.x.x

Y ya podremos lanzar Limelight desde nuestra Raspberry. Habrá que tener en cuenta que necesitaremos cerrar Xmbc/Kobi y cargar el módulo de sonido.

service kobi stop

modprobe snd_bcm2835

sudo java -jar limelight-pi.jar  stream 192.168.x.x

Si además tenemos un mando con el que queramos jugar tendremos primero que realizar un mapeado del mismo. En primer lugar tendremos que identificar dónde está nuestro mando y si ha sido reconocido correctamente. Para tal fin podremos utilizar evtest:

sudo apt-get install evtest
sudo evtest

Una vez localizada la ruta, realizaremos el mapeado del mismo y lo almacenaremos en un fichero (en mi caso el mando estaba en /dev/input/event2 y el fichero quería que fuese ps2-1.map).

sudo java -jar limelight.jar map -input /dev/input/event2 ps2-1.map

Así que, finalmente, ejecutaremos lo siguiente:

sudo java -jar limelight.jar -mapping /home/pi/ps2-1.map stream 192.168.x.x

Una última consideración a tener en cuenta es que deberemos tener Steam cerrado antes de lanzar Limelight y que, a pesar de que el rendimiento de vídeo a través de cable de red es muy bueno, el sonido a mi me ha estado dando problemas.

Categories: Raspberry Pi, Raspbmc Tags: ,

MLDonkey 3.1.3 en Raspbmc

domingo, 15 de diciembre de 2013 5 comentarios

Si somos poseedores de una Raspberry Pi con Raspbmc de S.O., posiblemente echemos de menos poder utilizar la última versión de MLDonkey que provee de soporte para enlaces magnet.

Para ello será tan fácil como descargar el código fuente de MLDonkey y compilarlo con mucha paciencia en nuestra Raspberry.

Primero actualizaremos todos los paquetes de nuestro sistema e instalaremos la versión de MLDonkey que hay en los repositorios con los siguientes comando:

# sudo apt-get update

# sudo apt-get upgrade

# sudo apt-get install mldonkey

Luego descargaremos las utilidades necesarias para la compilación:

# sudo apt-get -y install gcc make bc

Descargaremos el código fuente de MLDonkey (hay que buscar en las descargas el enlace al «Source»), los descomprimiremos e iniciaremos la compilación:

# wget http://downloads.sourceforge.net/project/mldonkey/mldonkey/3.1.3/mldonkey-3.1.3.tar.bz2

# tar xvjf mldonkey-3.1.3.tar.bz2

# ./configure –enable-batch

# make mlnet.static

La compilación puede haber tardado unas horas, pero al final tendremos un fichero llamado «mlnet.static» que deberemos copiar con el siguiente comando, pero no sin antes hacer una copia de seguridad de la versión anterior por precaución:

# sudo mv /usr/bin/mlnet /usr/bin/mlnet.backup

# sudo cp mlnet.static /usr/bin/mlnet

Para vuestra comodidad os dejo el tarball que contiene el ejecutable ya compilado para ARM:

mldonkey-3.1.3.static.arm-Linux_glibc-2.13.tar

Discos SSD en Linux

viernes, 4 de octubre de 2013 2 comentarios

Cada vez los discos SSD son más populares debido a su velocidad de lectura/escritura y su tiempo de acceso frente a los discos magnéticos convencionales. Pero como con todo, estos discos tienen un debilidad que preocupa a sus dueños y es la vida útil.

Sin entrar en detalles diré que se hace uso de algoritmos especiales para intentar alargar la vida útil del disco SSD lo máximo posible tratando de no sobrescribir siempre los mismos sectores y evitando realizar usos que conlleven muchas escrituras sin sacarles provecho (como logs o temporales del navegador web.

Existe un hilo en los foros de OpenSuse en los que se dan consejos y pautas muy útiles para este propósito, como cargar el temporal en RAM, alojar ciertos directorios en un disco duro magnético, etc.

Categories: Discos duros, OpenSuse Tags: ,

Velocidad de procesador i7

sábado, 21 de septiembre de 2013 Sin comentarios

A veces resulta difícil saber si un procesador como un i7 está haciendo uso de la capacidad Intel Turbo Boost, pues el sistema operativo simplemente nos dirá que está funcionando al 100% y no reflejará la velocidad en Ghz real.

Para ello existe una pequeña utilidad que nos mostrará un amplio y detallado informe actualizado a tiempo real de nuestra CPU. Se trata de i7z.

Como se puede apreciar en la siguiente captura de pantalla, además de informarnos de la velocidad en Ghz de cada núcleo, nos indica en qué estado se encuentra y a qué temperatura está trabajando.

i7z

Extraer con seguridad un disco duro SATA

viernes, 20 de septiembre de 2013 2 comentarios

Cada vez es más usual ver torres con una base integrada para la conexión de disco duros SATA y esto, aunque muy útil, acarrea un pequeño inconveniente y es el detener la rotación del disco duro sin un interruptor que elimine su suministro eléctrico.

Estos son los pasos habituales:

  1. Se pincha el disco duro en la base SATA de la torre.
  2. El disco duro empieza a girar y el S.O. lo reconoce.
  3. Montamos el disco duro y hacemos uso de él.
  4. Cuando hemos terminado de trabajar con él lo desmontamos.
  5. El disco duro sigue girando y si lo retiramos puede ser que la mano se nos vaya de un lado a otro (¡probadlo jajaja! o mejor no…).

¿Cómo detener el giro de los platos del disco duro? Con una simple línea de código siendo root:

echo 1 > /sys/block/sdX/device/delete

 

Recuperación de discos duros

martes, 4 de octubre de 2011 Sin comentarios

Cuando un disco duro falla y no existe copia de seguridad de los datos contenidos en él es un problema, pero se agrava notablemente si además el fallo es físico, ya sea porque la placa electrónica se haya quemado o que la cabeza lectora haya muerto. En estos casos da igual el software que queramos utilizar para recuperar los datos, nunca los vamos a recuperar.

Ante esta situación quedan dos alternativas: llevar el disco duro a una empresa que se dedique a recuperar los datos o intentar hacerlo por uno mismo si se encuentra en posesión de otro disco duro idéntico. La primera opción es la más cara pero más segura y la segunda opción es la más peligrosa para la poca integridad que le queda al disco.

Para esto hay una serie de vídeos que detallan el proceso de recuperación, explicando tantos los distintos fallos posibles como las diferentes formas de resolverlos. Dejo la primera parte, el resto está enlazado en el vídeo.