[Linux] udev update bij cardreader insert/remove?

Pagina: 1
Acties:

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46
Eerst even wat systeem specs:
Gentoo Linux, kernel 2.6.10-rc2 met udev (geen devfs)

Ik heb een usb multi-cardreader. Deze heb ik netjes aan de praat gekregen zodanig dat automatisch de juiste devices gecreëerd worden met udev als ik het apparaat aansluit met daarin een of meer kaartjes. Voor CF wordt bijvoorbeeld /dev/storage/compact_flash gemaakt, voor SM /dev/storage/smart_media, etc. Werkt mooi.

Echter, deze worden alleen maar aangemaakt op het moment dat ik de reader aansluit. Als ik kaartjes er bij insteek terwijl de reader al aangesloten is, dan wordt het device niet aangemaakt. Andersom wordt het device ook niet verwijderd als ik een kaartje eruit trek. Niet erg netjes dus. Het is dat ik nu nog een losse reader heb die ik makkelijk kan connecten en disconnecten, maar ik wil graag overstappen naar een ingebouwde...
Ik heb gemerkt dat als ik het sg_map commando geef, de mappings geupdate worden en de juiste devices verschijnen of verdwijnen. Nu had ik dus gedacht om gedurende de tijd dat de cardreader is aangesloten met een bepaald interval (elke 2 seconden bijvoorbeeld) dit commando uit te voeren, om zo e.e.a. up to date te houden. Ik heb echter geen idee hoe ik dat zou moeten doen. Heeft iemand hier een idee hoe ik dat kan aanpakken? Misschien een scriptje dat wordt gestart en gestopt via hotplug?

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • wica
  • Registratie: Februari 2002
  • Laatst online: 14-01 16:59

wica

De duivel jacht op me

Om sg_map om de zoveel tijd uit te voeren heb je crontab, dit is natuurlijk alleen maar een work around ;)

Wat zegt /var/log/messages als je de kaart in en uit trekt? krijg je een melding van sg?

RFC | The Linux Document Project | gentoo.


  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46
Er komt niets in /var/log/messages terecht. Zoals ik zelf ook al zei lijkt het regelmatig uitvoeren van sg_map de enige optie, maar dat hoeft natuurlijk alleen als er zo'n cardreader is aangesloten. Daarom wilde ik dat starten en stoppen via hotplug ofzo. Maar hoe je dat doet: geen idee!

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

is het dan niet een nettere oplossing om dan maar alle device nodes aan te maken? ook degenen die (nog) niet nodig zijn? mooiste zou natuurlijk zijn om ze aan te maken op het moment dat ze nodig zijn, maar dan heb je ergens een event nodig, en ik weet niet of dat gegenereerd wordt. verandert er iets in je sysfs als je een kaartje inplugt?

It sounds like it could be either bad hardware or software


  • cool_zero
  • Registratie: Juni 2001
  • Laatst online: 25-10-2022
van de hotplugging site:
In particular, udev builds on hotplug, to help make sure your /dev/... directory matches the devices actually present on your system

Het lijkt me dat de device driver van deze multi-cardreader events genereert die door hotplug kunnen worden gebruikt. Zodra je een kaart erin stopt zou er een event naar de hotplug deamon worden gestuurd waarmee acties kunnen worden gestart.

  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46
Hmmm.... Enig idee hoe ik kan controleren of er dit soort events langskomen, en welke dat dan zijn?

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 13-02 20:06

Gerco

Professional Newbie

Je zou een hotplug agent kunnen maken die zijn events logged naar een plaats waar je iets aan hebt. Kijk eens in /etc/hotplug/*.agent en "man hotplug"

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • AlterEgo
  • Registratie: Juli 2001
  • Niet online
Als je devfs zou gebruiken staat hier (UK) een interessante benadering: parted gebruiken voor de partitietabel-lookup.


Dit lijkt me de juiste weg bij gebruik van udev:
Another difficult situation is having a multiple-slot USB-storage card reader. These types of device generally do not inform the host when new cards are plugged in or out, so plugging a card into an unused slot while the reader is plugged in will not create the extra device node needed for mounting!
This problem also applies to other USB disks - e.g. if you create a new partition, the new partition node will not appear until you re-plug the device.

udev provides a solution here - it is able to create nodes for all partitions of a block device. For every rule that you specify, the block device will have all 16 partition nodes created. To achieve this, you can simply modify the NAME key, as shown below:

BUS="usb", SYSFS{product}="USB 2.0 Storage Device", NAME{all_partitions}="usbhd"

You will now have nodes named: usbhd, usbhd1, usbhd2, usbhd3, ..., usbhd15.
Ik heb het zelf nooit geprobeerd (externe reader _/-\o_ ), dus: even stekkertje eruit/erin.
Pagina: 1