struct layer1 {
        u_long Flags;
        struct FsmInst l1m;
-       struct FsmTimer timer;
+       struct FsmTimer timer3;
+       struct FsmTimer timerX;
        int delay;
        int t3_value;
        struct dchannel *dch;
        struct layer1 *l1 = fi->userdata;
 
        mISDN_FsmChangeState(fi, ST_L1_F3);
-       mISDN_FsmRestartTimer(&l1->timer, 550, EV_TIMER_DEACT, NULL, 2);
+       mISDN_FsmRestartTimer(&l1->timerX, 550, EV_TIMER_DEACT, NULL, 2);
        test_and_set_bit(FLG_L1_DEACTTIMER, &l1->Flags);
 }
 
        mISDN_FsmChangeState(fi, ST_L1_F7);
        l1->dcb(l1->dch, INFO3_P8);
        if (test_and_clear_bit(FLG_L1_DEACTTIMER, &l1->Flags))
-               mISDN_FsmDelTimer(&l1->timer, 4);
+               mISDN_FsmDelTimer(&l1->timerX, 4);
        if (!test_bit(FLG_L1_ACTIVATED, &l1->Flags)) {
                if (test_and_clear_bit(FLG_L1_T3RUN, &l1->Flags))
-                       mISDN_FsmDelTimer(&l1->timer, 3);
-               mISDN_FsmRestartTimer(&l1->timer, 110, EV_TIMER_ACT, NULL, 2);
+                       mISDN_FsmDelTimer(&l1->timer3, 3);
+               mISDN_FsmRestartTimer(&l1->timerX, 110, EV_TIMER_ACT, NULL, 2);
                test_and_set_bit(FLG_L1_ACTTIMER, &l1->Flags);
        }
 }
        }
        if (l1->l1m.state != ST_L1_F6) {
                mISDN_FsmChangeState(fi, ST_L1_F3);
-               l1->dcb(l1->dch, HW_POWERUP_REQ);
+               /* do not force anything here, we need send INFO 0 */
        }
 }
 
 {
        struct layer1 *l1 = fi->userdata;
 
-       mISDN_FsmRestartTimer(&l1->timer, l1->t3_value, EV_TIMER3, NULL, 2);
+       mISDN_FsmRestartTimer(&l1->timer3, l1->t3_value, EV_TIMER3, NULL, 2);
        test_and_set_bit(FLG_L1_T3RUN, &l1->Flags);
+       /* Tell HW to send INFO 1 */
        l1->dcb(l1->dch, HW_RESET_REQ);
 }
 
 
 static void
 release_l1(struct layer1 *l1) {
-       mISDN_FsmDelTimer(&l1->timer, 0);
+       mISDN_FsmDelTimer(&l1->timerX, 0);
+       mISDN_FsmDelTimer(&l1->timer3, 0);
        if (l1->dch)
                l1->dch->l1 = NULL;
        module_put(THIS_MODULE);
        nl1->l1m.printdebug = l1m_debug;
        nl1->dch = dch;
        nl1->dcb = dcb;
-       mISDN_FsmInitTimer(&nl1->l1m, &nl1->timer);
+       mISDN_FsmInitTimer(&nl1->l1m, &nl1->timer3);
+       mISDN_FsmInitTimer(&nl1->l1m, &nl1->timerX);
        __module_get(THIS_MODULE);
        dch->l1 = nl1;
        return 0;