W latach 80. związał się z opozycją demokratyczną. We wrześniu tegoż roku wstąpił do „Solidarności”, był członkiem komitetu założycielskiego na UWr, następnie przewodniczącym komisji zakładowej. Po wprowadzeniu stanu wojennego przewodniczył komitetowi strajkowemu na UWr. Pozostawał w ukryciu do stycznia 1982, po ujęciu internowano go na okres około półtora miesiąca. Kontynuował działalność podziemną, za co był m.in. tymczasowo aresztowany na przełomie listopada i grudnia 1982, a także wielokrotnie zatrzymywany. W latach 80. współpracował z redakcjami podziemnych pism, w 1989 ponownie został przewodniczącym uczelnianych struktur związku.
W lipcu 1990 został przewodniczącym zespołu statutowego ROAD podczas rady założycielskiej tego ugrupowania. W latach 1991–1997 był posłem na Sejm I i II kadencji wybranym z listy ogólnopolskiej kandydatów w okręgach wrocławskich: nr 11 i nr 50 z ramienia Unii Demokratycznej, reprezentując okręg wyborczy Wrocławiu. Pracował m.in. w Komisji Edukacji, Nauki i Postępu Technicznego oraz Komisji Regulaminowej i Spraw Poselskich. W latach 1997–2001 z ramienia Unii Wolności zajmował funkcję członka Trybunału Stanu. W 1998 nieskutecznie kandydował do Sejmiku Województwa Dolnośląskiego z listy UW. W 2005 na krótko przystąpił do Partii Demokratycznej, później pozostał bezpartyjny.