[Musix-usuarios] captura y control sobre webcam

fri jappi frijappi en gmail.com
Vie Ago 6 15:26:55 CEST 2010


El día 6 de agosto de 2010 04:03, Suso Comesaña <susobaco en gmail.com> escribió:
> Uy!!!!....que parece que ya carga....jejejeje...
>
> bien, seguimos probando...ahora dos partes...
>
> 1ª...abrimos consola y nos logueamos como root (ya sabes, no?
>
de fiesta pa logeo root

> escribimos:
>
> cd /opt/webcam/microdia (intro)
>
> cp sn9c20x.ko
> /lib/modules/2.6.29.4-libre1-rt19-musix32/kernel/drivers/media/video/usbvideo/
> (tecla intro)
>
> depmod -a (tecla intro)
>
> salimos de la consola...

musix2:/home/cacho# cd /opt/webcam/microdia
musix2:/opt/webcam/microdia# cp sn9c20x.ko
/lib/modules/2.6.29.4-libre1-rt19-musix32/kernel/drivers/media/video/usbvideo/
musix2:/opt/webcam/microdia# depmod -a
musix2:/opt/webcam/microdia#





>
> 2ª...abrimos otra y escribimos:
>
> kdesu kwrite /etc/modules (tecla intro)
>
> introducimos la contrasela de root
>
cacho en musix2:~$ kdesu kwrite /etc/modules

y apareció kwrite con esto

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

firewire-sbp2
loop




> y agregamos estas cuatro lineas al archivo
>
> v4l2_common
> usbvideo
> videodev
> sn9c20x

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

firewire-sbp2
loop
v4l2_common
usbvideo
videodev
sn9c20x



>
> y guardas el documento (Archivo/Guardar...cosa curiosa...al guardar este
> tipo de archivos de configuración en gnu-linux, he observado que necesitan
> tener la última línea en blanco...o sea que recordad...dadle un par de veces
> al intro despues de introducir cambos en los archivos...)
>

hecho, dejé varias

> Con este paso nos aseguramos que el contrador se carga al inicio del
> sistema...
>
> reinicia el ordenador...

reinicio
>
> abre una consola
>  y pon:
>
> LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so mplayer tv:// -tv
> driver=v4l2:width=640:height=480:fps=25:device=/dev/video0 -vo x11 (todo en
> una misma línea...) (tecla intro)

cacho en musix2:~$ LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so mplayer
tv:// -tv driver=v4l2:width=640:height=480:fps=25:device=/dev/video0
-vo x11
MPlayer 1.0rc2-4.3.2-DFSG-free (C) 2000-2007 MPlayer Team
CPU: Genuine Intel(R) CPU           T2060  @ 1.60GHz (Family: 6,
Model: 14, Stepping: 12)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing tv://.
TV file format detected.
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski <olschewski en zpr.uni-koeln.de>
 comment: first try, more to come ;-)
v4l2: unable to open '/dev/video0': No such file or directory
v4l2: ioctl set mute failed: Bad file descriptor
v4l2: 0 frames successfully processed, 0 frames dropped.


Exiting... (End of file)
cacho en musix2:~$



>
> a ver si hay suerte!!!!
>
> vuelve a pegar el resultado de lo que salga en consola al poner:
>
> lsmod | grep sn9c20x (tecla intro)

Exiting... (End of file)
cacho en musix2:~$ lsmod | grep sn9c20x
sn9c20x                65844  0
videodev               36420  3 sn9c20x,usbvideo,v4l2_common




>
>
> (Creo que ya queda poco...)
>

Menos que antes seguro






>
>
> El 5 de agosto de 2010 15:12, fri jappi <frijappi en gmail.com> escribió:
>>
>> El día 5 de agosto de 2010 09:15, Suso Comesaña <susobaco en gmail.com>
>> escribió:
>> > Seguimos probando...
>>
>> de eso se trata
>> >
>> > abrimos consola...
>> >
>> > logueamos como root
>>
>> sip, sufi, gracias
>>
>> ...(ya sabes su+intro+contraseña+intro)
>>
>> ok, lo aprendí, no te ocupes
>> >
>> > cd /opt/webcam/microdia (tecla intro)
>> > modprobe videodev (tecla intro)
>> > modprobe usbvideo (tecla intro)
>> > insmod ./sn9c20x.ko (tecla intro)
>> > depmod -a (tecla intro)
>> >
>> > a ver que pasa ahora...ponme el resultado...
>> >
>>
>> musix2:/home/cacho# cd /opt/webcam/microdia
>> musix2:/opt/webcam/microdia#  modprobe videodev
>> musix2:/opt/webcam/microdia#  modprobe usbvideo
>> musix2:/opt/webcam/microdia# insmod ./sn9c20x.ko
>> musix2:/opt/webcam/microdia# depmod -a
>> musix2:/opt/webcam/microdia#
>>
>> guauu, no lo se
>> pero parece muy muy alentador
>> qué dices?
>> >
>> >
>> > El 5 de agosto de 2010 12:24, fri jappi <frijappi en gmail.com> escribió:
>> >>
>> >> El día 5 de agosto de 2010 05:09, Suso Comesaña <susobaco en gmail.com>
>> >> escribió:
>> >> > Por lo que veo, no te carga el controlador:
>> >> >
>> >> > insmod: error inserting './sn9c20x.ko': -1 Unknown symbol in module
>> >> >
>> >> > Haz en consola:
>> >> >
>> >> > cd /opt/webcam/microdia (tecla intro)
>> >> > dir (tecla intro)
>> >> >
>> >> > Pon lo que sale...
>> >>
>> >> cacho en musix2:~$
>> >> cacho en musix2:~$ cd /opt/webcam/microdia
>> >> cacho en musix2:/opt/webcam/microdia$ dir
>> >> Doxyfile   micron.o        sn9c20x-bridge.c   sn9c20x.h
>> >>  sn9c20x-sysfs.c
>> >> hv7131r.c  modules.order   sn9c20x-bridge.h   sn9c20x.ko
>> >> sn9c20x-sysfs.o
>> >> hv7131r.o  Module.symvers  sn9c20x-bridge.o   sn9c20x.mod.c
>> >>  sn9c20x-usb.c
>> >> Kconfig    omnivision.c    sn9c20x-debugfs.c  sn9c20x.mod.o
>> >>  sn9c20x-usb.o
>> >> Makefile   omnivision.h    sn9c20x-debugfs.o  sn9c20x.o
>> >>  sn9c20x-v4l2.c
>> >> micron.c   omnivision.o    sn9c20x-dev.c      sn9c20x-queue.c
>> >>  sn9c20x-v4l2.o
>> >> micron.h   README          sn9c20x-dev.o      sn9c20x-queue.o  tags
>> >> cacho en musix2:/opt/webcam/microdia$
>> >>
>> >> sin apuro Suso
>> >> un abrazo
>> >> c
>> >>
>> >> >
>> >> >
>> >> > El 4 de agosto de 2010 13:34, fri jappi <frijappi en gmail.com>
>> >> > escribió:
>> >> >>
>> >> >> El día 4 de agosto de 2010 03:37, Suso Comesaña <susobaco en gmail.com>
>> >> >> escribió:
>> >> >> > Vale...ok...lo que me parecía, que no está bien compilado, o
>> >> >> > simplemente
>> >> >> > no
>> >> >> > ha cargado el módulo...
>> >> >> >
>> >> >> > una prueba...
>> >> >> >
>> >> >> > abre una consola...
>> >> >> >
>> >> >> > logueate como root (su tecla intro contraseña...etc)
>> >> >>
>> >> >> instrucción finalizada
>> >> >> abre consola rut
>> >> >> (tecla intro) id.
>> >> >> >
>> >> >> > cd /opt/webcam/microdia (tecla intro)
>> >> >> >
>> >> >> > insmod ./sn9c20x.ko (tecla intro)
>> >> >> >
>> >> >> > depmod -a (tecla intro)
>> >> >> >
>> >> >> > exit (tecla intro)
>> >> >> >
>> >> >> > LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so mplayer tv:// -tv
>> >> >>  driver=v4l2:width=640:height=480:fps=25:device=/dev/video0 -vo x11
>> >> >> (tecla
>> >> >> > intro)
>> >> >>
>> >> >>
>> >> >> musix2:/home/cacho# cd /opt/webcam/microdia
>> >> >> musix2:/opt/webcam/microdia# insmod ./sn9c20x.ko
>> >> >> insmod: error inserting './sn9c20x.ko': -1 Unknown symbol in module
>> >> >> musix2:/opt/webcam/microdia# depmod -a
>> >> >> musix2:/opt/webcam/microdia#  exit
>> >> >> exit
>> >> >> cacho en musix2:~$  LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so mplayer
>> >> >> tv://
>> >> >> -tv
>> >> >> MPlayer 1.0rc2-4.3.2-DFSG-free (C) 2000-2007 MPlayer Team
>> >> >> CPU: Genuine Intel(R) CPU           T2060  @ 1.60GHz (Family: 6,
>> >> >> Model: 14, Stepping: 12)
>> >> >> CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
>> >> >> Compiled with runtime CPU detection.
>> >> >> Error: option 'tv' must have a parameter!
>> >> >> Error parsing option on the command line: -tv
>> >> >> cacho en musix2:~$
>> >> >> driver=v4l2:width=640:height=480:fps=25:device=/dev/video0 -vo x11
>> >> >> bash: -vo: command not found
>> >> >>
>> >> >> El último comando acciona sin enter
>> >> >> al darlo
>> >> >> aparece bash
>> >> >>
>> >> >>
>> >> >> >
>> >> >> > escribeme lo que pasa...
>> >> >> >
>> >> >> > y pon tambien el resultado de poner en una consola:
>> >> >> >
>> >> >> > lsmod | grep microdia (tecla intro)
>> >> >> >
>> >> >> > lsmod (tecla intro)
>> >> >>
>> >> >> cacho en musix2:~$ lsmod | grep microdia
>> >> >> cacho en musix2:~$  lsmod
>> >> >> Module                  Size  Used by
>> >> >> i915                  133832  1
>> >> >> drm                   136180  1 i915
>> >> >> i2c_algo_bit            4984  1 i915
>> >> >> ppdev                   6448  0
>> >> >> parport_pc             32368  0
>> >> >> lp                      9248  0
>> >> >> parport                32128  3 ppdev,parport_pc,lp
>> >> >> ipv6                  246808  22
>> >> >> fuse                   48312  1
>> >> >> loop                   13420  0
>> >> >> firewire_sbp2          13084  0
>> >> >> snd_hda_codec_realtek   175976  1
>> >> >> snd_hda_codec_si3054     4128  1
>> >> >> snd_hda_intel          22456  1
>> >> >> snd_hda_codec          59952  3
>> >> >> snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_intel
>> >> >> snd_hwdep               6348  1 snd_hda_codec
>> >> >> snd_pcm_oss            32944  0
>> >> >> snd_mixer_oss          13992  1 snd_pcm_oss
>> >> >> snd_pcm                65024  4
>> >> >> snd_hda_codec_si3054,snd_hda_intel,snd_hda_codec,snd_pcm_oss
>> >> >> snd_seq_dummy           2452  0
>> >> >> rng_core                3684  0
>> >> >> iTCO_wdt               10212  0
>> >> >> serio_raw               4896  0
>> >> >> iTCO_vendor_support     3260  1 iTCO_wdt
>> >> >> psmouse                49824  0
>> >> >> snd_seq_oss            25836  0
>> >> >> i2c_i801                8208  0
>> >> >> i2c_core               21100  4 i915,drm,i2c_algo_bit,i2c_i801
>> >> >> snd_seq_midi            5772  0
>> >> >> snd_rawmidi            18944  1 snd_seq_midi
>> >> >> arc4                    1564  2
>> >> >> ecb                     2380  2
>> >> >> snd_seq_midi_event      6444  2 snd_seq_oss,snd_seq_midi
>> >> >> video                  17144  0
>> >> >> output                  2684  1 video
>> >> >> snd_seq                43636  6
>> >> >> snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
>> >> >> button                  5976  0
>> >> >> ac                      4080  0
>> >> >> battery                10224  0
>> >> >> snd_timer              18396  2 snd_pcm,snd_seq
>> >> >> snd_seq_device          6400  5
>> >> >> snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
>> >> >> snd                    50988  15
>> >> >>
>> >> >>
>> >> >>
>> >> >> snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
>> >> >> iwl3945                77132  0
>> >> >> rfkill                  9824  2 iwl3945
>> >> >> mac80211              141344  1 iwl3945
>> >> >> soundcore               6556  1 snd
>> >> >> lib80211                6072  1 iwl3945
>> >> >> snd_page_alloc          8280  2 snd_hda_intel,snd_pcm
>> >> >> cfg80211               33240  2 iwl3945,mac80211
>> >> >> intel_agp              22744  1
>> >> >> agpgart                31808  3 drm,intel_agp
>> >> >> joydev                  8960  0
>> >> >> evdev                   8624  9
>> >> >> ext3                  108404  1
>> >> >> jbd                    41048  1 ext3
>> >> >> mbcache                 7128  1 ext3
>> >> >> sd_mod                 24200  3
>> >> >> ide_cd_mod             25964  0
>> >> >> cdrom                  30196  1 ide_cd_mod
>> >> >> ata_piix               21260  2
>> >> >> ata_generic             4356  0
>> >> >> usbhid                 30012  0
>> >> >> hid                    36488  1 usbhid
>> >> >> ohci1394               26772  0
>> >> >> ieee1394               77020  1 ohci1394
>> >> >> 8139too                21292  0
>> >> >> sdhci_pci               6504  0
>> >> >> firewire_ohci          20020  0
>> >> >> sdhci                  14952  1 sdhci_pci
>> >> >> 8139cp                 17368  0
>> >> >> pata_acpi               3636  0
>> >> >> mmc_core               44296  1 sdhci
>> >> >> firewire_core          34636  2 firewire_sbp2,firewire_ohci
>> >> >> mii                     4688  2 8139too,8139cp
>> >> >> led_class               3740  2 iwl3945,sdhci
>> >> >> crc_itu_t               1800  1 firewire_core
>> >> >> libata                151676  3 ata_piix,ata_generic,pata_acpi
>> >> >> scsi_mod              138148  3 firewire_sbp2,sd_mod,libata
>> >> >> piix                    5660  0
>> >> >> ide_pci_generic         3440  0
>> >> >> ide_core               92676  3 ide_cd_mod,piix,ide_pci_generic
>> >> >> ehci_hcd               30244  0
>> >> >> uhci_hcd               19308  0
>> >> >> thermal                15404  0
>> >> >> processor              40360  3 thermal
>> >> >> fan                     4140  0
>> >> >> thermal_sys            10988  4 video,thermal,processor,fan
>> >> >> hwmon                   2376  1 thermal_sys
>> >> >> cacho en musix2:~$
>> >> >>
>> >> >>
>> >> >> >
>> >> >> > seguimos...
>> >> >>
>> >> >> re-ok!
>> >> >>
>> >> >> >> > En el escritorio...(estamos hablando de kde)
>> >> >>
>> >> >> Está bien una ayuda ya que pasarles mis intentos los aburrirá
>> >> >> clik en acceso al escritorio no me resolvió
>> >> >> clik derecho ofrece menú de panel
>> >> >> con añadir miniaplicación o aplicación etc.
>> >> >>
>> >> >> PD:
>> >> >> mm, añadir aplicación no kde debe ser
>> >> >>
>> >> >> finalmente
>> >> >> repetiré la órden anterior por sospechada como mal ejecutada
>> >> >>
>> >> >> y ya repetida nada
>> >> >> todo igual
>> >> >>
>> >> >> el módulo aparece en verde
>> >> >> sólo porque sí lo recargué
>> >> >> >
>> >> >> Gracias
>> >> >> Salud y suerte
>> >> >> c
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > El 4 de agosto de 2010 02:24, fri jappi <frijappi en gmail.com>
>> >> >> > escribió:
>> >> >> >>
>> >> >> >> El día 3 de agosto de 2010 07:40, Suso Comesaña
>> >> >> >> <susobaco en gmail.com>
>> >> >> >> escribió:
>> >> >> >> > Bueno....
>> >> >> >> >
>> >> >> >> > Suponiendo que ya tenemos el módulo compilado y en
>> >> >> >> > funcionamiento...vamos a
>> >> >> >> > instalar una herramienta que nos permitirá tener control, sobre
>> >> >> >> > los
>> >> >> >> > parámetros de brillo, color, etc de la webcam...
>> >> >> >> >
>> >> >> >> > este programa se llama: v4l2ucp
>> >> >> >> >
>> >> >> >> > Este programa se encuentra compilado ya para debian en los
>> >> >> >> > repositorios
>> >> >> >> > debian-multimedia.
>> >> >> >> >
>> >> >> >> > Para añadir los repositorios, abrimos el synaptic, nos vamos al
>> >> >> >> > apartado
>> >> >> >> > de
>> >> >> >> > configuración;repositorios...le damos al botón nuevo y tiene
>> >> >> >> > que
>> >> >> >> > quedara
>> >> >> >> > así:
>> >> >> >> >
>> >> >> >> > Binario (deb)
>> >> >> >> >
>> >> >> >> > URI: http://www.debian-multimedia.org/
>> >> >> >> >
>> >> >> >> > Distribución :lenny
>> >> >> >> >
>> >> >> >> > Sección (es) : main
>> >> >> >> >
>> >> >> >> > Le damos otra vez a nuevo y añadimos:
>> >> >> >> >
>> >> >> >> > Fuentes (deb-src)
>> >> >> >> >
>> >> >> >> > URI: http://www.debian-multimedia.org/
>> >> >> >> >
>> >> >> >> > Distribución :lenny
>> >> >> >> >
>> >> >> >> > Sección (es) : main
>> >> >> >> >
>> >> >> >> > Ahora pulsamos el botón de aceptar y luego el de
>> >> >> >> > recargar...(obviamos
>> >> >> >> > el
>> >> >> >> > mensaje de la clave pública)
>> >> >> >> >
>> >> >> >> > Le damos al botón buscar e introducimos:
>> >> >> >> >
>> >> >> >> > v4l2ucp
>> >> >> >> >
>> >> >> >> > una vez encontrado, con el botón de la derecha del ratón, de
>> >> >> >> > damos
>> >> >> >> > a
>> >> >> >> > la
>> >> >> >> > opción marcar para instalar y luego al botón de aplicar..
>> >> >> >> >
>> >> >> >> > una vez instalado, nos dirigimos dentro del synaptic a
>> >> >> >> > preferencias;repositorios y desactivamos los dos repositorios
>> >> >> >> > de
>> >> >> >> > debian-multimedia (se hace pulsando con el ratón encima del
>> >> >> >> > cuadradillo
>> >> >> >> > de
>> >> >> >> > la izquierda de cada línea de repositorio)...es muy importante
>> >> >> >> > pues
>> >> >> >> > hay
>> >> >> >> > paquetes de debian-multimedia que provocan errores en
>> >> >> >> > musix...solo
>> >> >> >> > se
>> >> >> >> > debe
>> >> >> >> > tener activado para instalaciones puntuales....(otro paquete
>> >> >> >> > interesante
>> >> >> >> > en
>> >> >> >> > el ámbito multimedia es avidemux... es un conversor de formatos
>> >> >> >> > de
>> >> >> >> > video,
>> >> >> >> > muy interesante si despues vamos a editar el video...solo está
>> >> >> >> > en
>> >> >> >> > debian-multimedia y es compatible con musix 2.0)
>> >> >> >> >
>> >> >> >>
>> >> >> >> hasta acá posible ok
>> >> >> >> excepto avidemu
>> >> >> >> que suena muy alentador
>> >> >> >>
>> >> >> >>
>> >> >> >> > abrimos una consola y tecleamos:
>> >> >> >> >
>> >> >> >> > LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so v4l2ucp
>> >> >> >> >
>> >> >> >> > y con esto tendríamos que tener control sobre la webcam...
>> >> >> >>
>> >> >> >> cacho en musix2:~$ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so v4l2ucp
>> >> >> >> apareció un cartelito unable to open dev/video0
>> >> >> >> no existe el fichero o directorio
>> >> >> >>
>> >> >> >> >
>> >> >> >> > Podemos crear un acceso directo...
>> >> >> >> >
>> >> >> >> en mi caso nop
>> >> >> >>
>> >> >> >> > En el escritorio...(estamos hablando de kde)
>> >> >> >>
>> >> >> >> después de media hora de buscar
>> >> >> >> no se que es el escritorio de kde
>> >> >> >>
>> >> >> >> > con el botón de la derecha del
>> >> >> >> > ratón, escogemos la opción, crear nuevo;enlace a aplicación:
>> >> >> >> >
>> >> >> >> > En el apartado de general introducimos el nombre (v4l2uc)
>> >> >> >> > incluso
>> >> >> >> > podemos
>> >> >> >> > elegir un icono...
>> >> >> >> >
>> >> >> >> > En el apartado de aplicación ponemos una pequeña descripción
>> >> >> >> > (controles
>> >> >> >> > webcam) y en la orden introducimos:
>> >> >> >> >
>> >> >> >> > LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so v4l2ucp
>> >> >> >> >
>> >> >> >> > si le damos a aceptar ya tendremos operativo nuestro icono...
>> >> >> >> >
>> >> >> >> > a ver si mañana puedo y continuo con el uso del kmplayer para
>> >> >> >> > capturar..
>> >> >> >>
>> >> >> >> ok
>> >> >> >> Poniendo kmplayer en ejecutar
>> >> >> >> nada
>> >> >> >>
>> >> >> >> 'imposible ejecutar'
>> >> >> >> >
>> >> >> >> > Continuará...
>> >> >> >>
>> >> >> >> ok
>> >> >> >>
>> >> >> >> no resulta alentador para Uds.
>> >> >> >> no pude mucho
>> >> >> >>
>> >> >> >> continuará
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > _______________________________________________
>> >> >> >> > Musix GNU+Linux - www.musix.org.ar
>> >> >> >> > Musix-usuarios mailing list
>> >> >> >> > Musix-usuarios en lists.ourproject.org
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > https://lists.ourproject.org/cgi-bin/mailman/listinfo/musix-usuarios
>> >> >> >> >
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Veritas liberabit nos
>> >> >> >>
>> >> >> >> _______________________________________________
>> >> >> >> Musix GNU+Linux - www.musix.org.ar
>> >> >> >> Musix-usuarios mailing list
>> >> >> >> Musix-usuarios en lists.ourproject.org
>> >> >> >>
>> >> >> >> https://lists.ourproject.org/cgi-bin/mailman/listinfo/musix-usuarios
>> >> >>
>> >>



Más información sobre la lista de distribución Musix-usuarios