streamdev doesn't query for a new device if the current and the next channel has the same transponder. This is checked via the following define:
channels.h:#define ISTRANSPONDER(f1, f2) (abs((f1) - (f2))< 4) //XXX
All the channels in channel.conf have the same frequency, so streamdev only changes the receivers but doesn't query for a device. I havent understand exactly what you are doing. Do you use an analogue input (like scart) of the pvr500 card and the channel switch script changes the channel of another device ? If so, i could imagine the frequency in channels.conf doesn't matter and you could simply modify the frequencies.
The frequency matters since he is using the tuner input.
Lars.
I think Rob's version of pvrinput has already the code for calling the externchannelswitch-script in "case eTelevision" and not only in "case eExternalInput". (Otherwise it wouldn't work at startup).
The code in ProvidesChannel() and SetChannelDevice checks not only for the same frequency, but also for the channel number:
if ((Channel->Number() == CurrentChannel.Number()) && (CurrentFrequency == Channel->Frequency()) && (CurrentInput == input) && (CurrentNorm == norm))
When Rob switches to another channel number, pvrinput should return needsDetachReceivers = true in ProvidesChannel(). It should also get a call for SetChannelDevice().
The problem is that both functions are never called - but obviously only in combination with running streamdev.