clsdev = device_create(dvb_class, adap->device,
                               MKDEV(DVB_MAJOR, nums2minor(adap->num, type, id)),
-                              NULL, "dvb%d.%s%d", adap->num, dnames[type], id);
+                              dvbdev, "dvb%d.%s%d", adap->num, dnames[type], id);
        if (IS_ERR(clsdev)) {
                printk(KERN_ERR "%s: failed to create device dvb%d.%s%d (%ld)\n",
                       __func__, adap->num, dnames[type], id, PTR_ERR(clsdev));
        return err;
 }
 
+static int dvb_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+       struct dvb_device *dvbdev = dev_get_drvdata(dev);
+
+       add_uevent_var(env, "DVB_DEVICE_NUM=%d", dvbdev->id);
+       add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
+       return 0;
+}
+
 static int __init init_dvbdev(void)
 {
        int retval;
                retval = PTR_ERR(dvb_class);
                goto error;
        }
+       dvb_class->dev_uevent = dvb_uevent;
        return 0;
 
 error: